首页 文章

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

提问于
浏览
3

正如所料,这段代码:

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 回答

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

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

    _G.foo[s]()
    

    或者干脆:

    foo[s]()
    

相关问题