如何解决用字符串调用表
好的,我将进入正题。我目前正在为 RedM 编写脚本,但遇到了一些麻烦。我有一张我需要调用的表,但我需要能够用字符串调用它,尽管几天来我一直在努力解决这个问题,但我还是没有走运。这是我正在尝试做的一个快速示例。
Table = {
"Value 1","Value 2","Value 3"
}
local _Table = "Table"
for key,value in pairs(_Table) do
print(value)
end
我想要做的是打印出该表中的所有内容,但是当您尝试使用字符串时,您会收到以下错误
$lua main.lua
lua: main.lua:9: bad argument #1 to 'for iterator' (table expected,got string)
stack traceback:
[C]: in function 'next'
main.lua:9: in main chunk
[C]: in ?
很明显,当您不使用字符串时,脚本可以工作,但这对我不起作用。老实说,我什至不确定我正在尝试做的事情是否可行,但如果是这样并且有人有解决方案,我将非常感激lol。
解决方法
如果我理解正确,您想通过其变量名称获取一个表。这只有在变量是全局的情况下才有可能,它不应该(始终将您的变量设为局部变量,子变量),即使这样它也不是最优雅的解决方案。
更好的选择可能是:将您的表放在另一个表中:
local Tables = {
Table_1 = { 1,2,3,}
Table_2 = { 2,4,}
}
print(Tables["Table_1"])
这样可以保持全局范围干净,并允许您将整个表集作为单个值传递。
,-
你不能调用一个表,除非它的元表实现了
__call
。我猜你在这里混淆了一些基本术语。 -
你的代码没有意义
-- this line assigns the string "Table" to _Table
local _Table = "Table"
-- now you put into pairs which may only take a table as input
for key,value in pairs(_Table) do
print(value)
end
如果 Table
是您示例中的全局变量,您可以通过全局环境表 _G
访问它。
for key,value in pairs(_G.Table) do print(value) end
或
local _Table = "Table"
for key,value in pairs(_G[_Table]) do print(value) end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。