在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
答案 0 :(得分:1)
熟悉Lua模块和标准函数(?!.*\"")(?<!(?:\bAND\b\s|\bOR\b\s))(?:\b(?:AND|OR)\b)(?=\s\b(?:AND|OR)\b)|(?<=\bAND\b\s|\bOR\b\s)(?:\b(?:AND|OR)\b)(?!\s\b(?:AND|OR)\b)|^\b(?:AND|OR)\b|(?:AND\s?|OR\s?)$|(?<=\()\s?(?:\bAND\b|\bOR\b)|(?<=\()(?:\bOR|\bAND)(?=\))|(?:\bOR|\bAND)(?=\))(?!.*\"")
https://www.lua.org/pil/8.1.html https://www.lua.org/manual/5.3/manual.html#pdf-require
您可以像函数一样执行Lua文件。
文件A.lua:
require
文件B.lua:
print("hello this is from file A")
运行B.lua后,您将获得以下输出:
你好这是来自文件A
,这是来自文件B
一旦了解了正在发生的事情,就可以跨多个文件实现表成员。
我建议不要在多个文件中拆分一个表。我宁愿有一个单独的数学和拼写表以及一个将它们组合到CardsScene的第三个表。不只是2个在同一张桌子上工作。
答案 1 :(得分:1)
假设您没有在任何文件中将CardsScene
声明为本地文件,那么它就是全局文件。
设置其值后运行的任何代码都将使用Core.class(Sprite)
创建的表。在Lua中,未声明函数。它们是在运行时创建的值。当您运行如下语句时:
function CardsScene:basicMathAnswer()
end
它创建一个函数值,并将其分配给表basicMathAnswer
当前求值的值所引用的表中的CardsScene
字段。
因此,请继续将任何或所有这些语句与函数定义和赋值一起移动到任意数量的文件中。只需确保在分配全局变量CardsScene
之后执行所有操作。