Lua-基本函数表
我试图理解Lua函数表是如何正确工作的 我希望能够定义函数,然后在表中列出这些函数,以便在遍历表时可以运行每个函数 这是我的代码:Lua-基本函数表,lua,lua-table,Lua,Lua Table,我试图理解Lua函数表是如何正确工作的 我希望能够定义函数,然后在表中列出这些函数,以便在遍历表时可以运行每个函数 这是我的代码: function qwe() print ("qwe fired") end function asd() print ("asd fired") end local tab = { qwe(), asd(), } function zxc() print ("zxc start") for k,v in pair
function qwe()
print ("qwe fired")
end
function asd()
print ("asd fired")
end
local tab = {
qwe(),
asd(),
}
function zxc()
print ("zxc start")
for k,v in pairs (tab) do
return v
end
print ("zxc end")
end
我知道这很可能是一种非常基本的东西,但我没有真正的编程背景,(我正在尝试自学Lua),大多数参考资料和示例似乎都依赖于我缺乏的基本理解
local tab = {
qwe(),
asd(),
}
将函数的结果分配给表,而不是函数引用。你应该做:
local tab = {
qwe,
asd,
}
如果需要调用这些值,只需将它们用作函数:
tab[1]() -- call `qwe` and discard results
-- or
tab[2]() -- call `asd` and discard results
-- or
for k,v in pairs (tab) do
return v() -- call first function and return its result(s)
end
以下是我根据保罗的答案提出的两个解决方案 --直接加载函数
function foo()
print("foo fired")
end
function goo()
print("goo fired")
end
function poo()
print("poo fired")
end
local roo = {
"foo()",
"goo()",
"poo()",
}
function zoo ()
print("\n ***** load function directly *****")
for k,v in pairs (roo) do
print(k,v)
load(v)()
end
print(" *** end ***\n\n")
end
--加载连接字符串
function foo()
print("foo fired")
end
function goo()
print("goo fired")
end
function poo()
print("poo fired")
end
local roo = {
"foo",
"goo",
"poo",
}
function zoo ()
print("\n ***** load concatenated string *****")
for k,v in pairs (roo) do
print(k,v)
load(v.."()")()
end
print(" *** end ***\n\n")
end
谢谢你的回答,保罗。根据你的回答,我现在有两个解决方案。我将把这两个问题都添加到我的原始问题中。