如何在Lua中将单个类的函数分割到多个文件中?

在Lua中,正确的方法是将单个类的多个函数分割到多个文件中吗?

例如,在下面的示例中,我想将数学函数和拼写函数分别拆分到不同的文件中。

CardsScene = Core.class(Sprite)

function CardsScene:basicMathInit()
end

function CardsScene:basicMathIdle()
end

function CardsScene:basicMathAnswer()
end

function CardsScene:basicSpellingInit()
end

function CardsScene:basicSpellingIdle()
end

function CardsScene:basicSpellingAnswer()
end
点赞
用户2858170
用户2858170

让你自己熟悉 Lua 模块和标准函数 require

https://www.lua.org/pil/8.1.html https://www.lua.org/manual/5.3/manual.html#pdf-require

你可以像执行函数一样执行 Lua 文件。

文件 A.lua:

print("hello this is from file A")

文件 B.lua:

require("A")
print("and this is from file B")

一旦你运行 B.lua,你将得到以下输出:

_ hello this is from file A_

and this is from file B

一旦你理解了正在发生的事情,你可以将你的表成员实现在多个文件之间。

我建议不要将一个表拆分成多个文件。我更希望有一个用于数学的单独表和一个用于拼写的单独表,还有一个将它们结合成 CardsScene 的第三个表。不只是 2 个在同一张表上工作。

2016-05-02 09:41:21
用户2226988
用户2226988

假设您没有在任何文件中将CardsScene声明为本地变量,则它是全局的。

在您设置其值后运行的任何代码都将使用Core.class(Sprite)创建的表。在Lua中,函数不是声明的,它们是在运行时创建的值。当您运行像这样的语句时:

function CardsScene:basicMathAnswer()
end

它将创建一个函数值并将其分配给CardsScene当前评估表所引用的字段中的basicMathAnswer

因此,请继续将任何或所有带有函数定义和赋值的语句移动到您想要的任意数量的文件中。只需确保在分配全局变量CardsScene的语句之后执行它们所有。

2016-05-02 17:38:35