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

标签 string lua lua-table

正如预期的那样,这段代码:

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]: ?

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

最佳答案

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

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

_G.foo[s]()

或者简单地说:

foo[s]()

关于string - 从字符串变量调用非全局函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21643550/

相关文章:

string - 解释/测试 ANTLRWorks 2 中的字符串

c++ - 将用户数据元表添加到 lua 表

windows - Lua os.execute 空终端

c - 在 lua 和 C 之间共享数组

表的 __gc 元方法的 Lua 5.1 解决方法

java - "Must be of an array type but is resolved to string"....为什么以及如何修复它?

string - 何时在 String 上使用 StringProperty?

arrays - 如何将已排序的表索引作为字符串返回?

regex - 如何在 Perl 的匹配正则表达式中包含一个变量,并检查该变量是否不在字符串中?

random - 从表中获取一个值并将其分配给另一个值,不重复