我有以下情况,代码的位置不会改变。如何修改此代码以修复错误而不移动函数和表变量。我是一个Lua新手,只有4天如何将函数作为lua表中的字段值,当函数稍后被声明时?
function a()
print("function a");
end
ftable = {
["a"] = a,
["b"] = b
};
function b()
print("function b");
end
ftable["a"](); -- prints 'function a'
ftable["b"](); -- attempt to call field 'b' (a nil value)
更新:使用以下机制可以做到这一点。
function a()
print("function a");
end
ftable = {
["a"] = a,
["b"] = "b"
};
function b()
print("function b");
end
ftable["a"](); -- prints 'function a'
_G[ftable["b"]]();
这是不可能的。你应该问问自己为什么你想这么做首先...你可以将你的函数分配给ftable.b,尽管 – Piglet
@Anish请删除你的问题的答案,并将其作为答案发布。一旦你对答案满意,你可以接受一个 - 即使它是你的。 (你可以通过添加解释来改进) –
最后一行应该是'ftable [_G [“b”]]()'。 – lhf