使用字符串调用 table
Calling a table with a string
好了,我进入正题。我目前正在为 RedM 编写脚本,运行 遇到了一些麻烦。我有一个 table 我需要调用,但我需要能够用字符串调用它,尽管我已经尝试了好几天都没有运气。这是我正在尝试做的一个简单示例。
Table = {
"Value 1",
"Value 2",
"Value 3"
}
local _Table = "Table"
for key, value in pairs(_Table) do
print(value)
end
我想要做的是打印出其中的所有内容 table 但是当您尝试使用字符串时会出现以下错误
$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 ?
显然,当您不使用字符串时,该脚本可以工作,但这对我不起作用。老实说,我什至不确定我正在尝试做的事情是否有可能,但如果可以,并且有人有解决方案,我将不胜感激,哈哈。
你不能调用 table,除非它的元table 实现了 __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
是您示例中的全局变量,您可以通过全局环境 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
如果我没理解错的话,你想通过它的变量名得到一个table。这只有在变量是全局变量时才有可能,而它不应该是全局变量(始终将变量设为本地变量,children),即使这样也不是最优雅的解决方案。
更好的选择可能是:将您的 table 放入另一个 table:
local Tables = {
Table_1 = { 1, 2, 3, }
Table_2 = { 2, 3, 4, }
}
print(Tables["Table_1"])
这使全局范围保持干净,并允许您将整组 table 作为单个值传递。
好了,我进入正题。我目前正在为 RedM 编写脚本,运行 遇到了一些麻烦。我有一个 table 我需要调用,但我需要能够用字符串调用它,尽管我已经尝试了好几天都没有运气。这是我正在尝试做的一个简单示例。
Table = {
"Value 1",
"Value 2",
"Value 3"
}
local _Table = "Table"
for key, value in pairs(_Table) do
print(value)
end
我想要做的是打印出其中的所有内容 table 但是当您尝试使用字符串时会出现以下错误
$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 ?
显然,当您不使用字符串时,该脚本可以工作,但这对我不起作用。老实说,我什至不确定我正在尝试做的事情是否有可能,但如果可以,并且有人有解决方案,我将不胜感激,哈哈。
你不能调用 table,除非它的元table 实现了
__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
是您示例中的全局变量,您可以通过全局环境 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
如果我没理解错的话,你想通过它的变量名得到一个table。这只有在变量是全局变量时才有可能,而它不应该是全局变量(始终将变量设为本地变量,children),即使这样也不是最优雅的解决方案。
更好的选择可能是:将您的 table 放入另一个 table:
local Tables = {
Table_1 = { 1, 2, 3, }
Table_2 = { 2, 3, 4, }
}
print(Tables["Table_1"])
这使全局范围保持干净,并允许您将整组 table 作为单个值传递。