从字符串变量调用非全局函数。

如何从字符串变量调用非全局函数?

预期的是,这段代码:

s = "bar"
bar = function() print(s) end
_G[s]()

输出:

bar

但是这个:

s = "bar"
foo = {
    bar = function() print(s) end,
    _G["foo." .. s]()
}

或这个:

s = "bar"
foo = {
    bar = function() print(s) end
}
_G["foo." .. s]()

输出:

attempt to call field '?' (a nil value)

stack traceback:

test.lua:4: in main chunk

[C]: ?

点赞
用户1009479
用户1009479
s = "bar"
foo = {
    bar = function() print(s) end
}
_G["foo." .. s]()

这种方法无法工作,因为没有名为 "foo.bar" 的表,而是在表 foo 中的字段 "bar"。因此,您可以这样调用它:

_G.foo[s]()

或者简单地:

foo[s]()
2014-02-08 08:07:22