【发布时间】:2021-10-04 22:53:59
【问题描述】:
我怎样才能使这段代码工作?它应该打印“Function a”然后是“Function b”,但它给了我错误。这是我想在主文件中迭代的模块中有一堆函数的其他一些文件的做法。
--stuff for module ----------------------
local funcs = {}
function funcs.a()
print("Function a")
end
function funcs.b()
print("Function b")
end
return funcs
-- stuff for main file---------------
for k,v in pairs(funcs) do
funcs[k]()
end
编辑:我试图让这段代码在一个文件中作为测试工作。一旦成功,我计划将这些片段移动到两个不同的文件中。
如果我将以下代码全部放在一个文件中,为什么它会给我错误 '
local funcs = {}
function funcs.a()
print("Function a")
end
function funcs.b()
print("Function b")
end
return funcs
for k,v in pairs(funcs) do
v()
end
【问题讨论】:
-
你是如何在主文件中初始化变量
funcs的? -
目前只有一个文件。在弄清楚如何使其工作后,我打算将它们分为主模块和模块。
-
error '
' 预计在 'for' 附近 - 因为 return funcs不在函数中。- 删除或注释掉它。另一件事是for do end没有检查v的类型,这不是很好的风格。为它做一个简单的条件:if type(v)=='function' then v() end -
returns funcs只有在您实际将代码放入单独的模块文件时才应该存在。在return语句之后,在当前范围内没有执行任何操作。并且编译器不希望在同一范围内返回后看到任何关键字。这就是为什么你得到编译器错误eof expected(eof = end of file)
标签: function loops for-loop lua