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

时间:2014-02-08 07:59:24

标签: string lua lua-table

正如所料,这段代码:

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

输出:

  

但要么:

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

或者这个:

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

输出:

  

尝试调用字段'?' (零值)
  堆栈追溯:
    test.lua:4:在主块中     [C]: ?

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

1 个答案:

答案 0 :(得分:4)

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

最后一种方法不起作用,因为没有这样的表"foo.bar",而是表"bar"中的字段foo。所以你可以这样称呼它:

_G.foo[s]()

或简单地说:

foo[s]()