首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用字符串调用表

用字符串调用表
EN

Stack Overflow用户
提问于 2021-02-13 19:36:31
回答 2查看 178关注 0票数 1

好吧,我直截了当地说。我目前正在为RedM编写一个脚本,遇到了一些麻烦。我有一个桌子,我需要打电话,但我需要能够调用它的字符串,尽管我试图弄清楚这几天,我一直没有运气。下面是我想要做的事情的一个简单例子。

代码语言:javascript
复制
Table = {
    "Value 1",
    "Value 2",
    "Value 3"
}


local _Table = "Table"
    for key, value in pairs(_Table) do
        print(value)
    end

但是,当您尝试使用字符串时,会得到以下错误:

代码语言:javascript
复制
$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。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-13 19:56:45

  1. 您不能调用一个表,除非它的元可实现__call。我想您在这里混淆了一些基本术语。

  1. 您的代码没有意义

代码语言:javascript
复制
-- 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访问它。

代码语言:javascript
复制
for key, value in pairs(_G.Table) do print(value) end

代码语言:javascript
复制
local _Table = "Table"
for key, value in pairs(_G[_Table]) do print(value) end
票数 0
EN

Stack Overflow用户

发布于 2021-02-13 20:16:24

如果我正确理解,您希望得到一个表的变量名。这只有在变量是全局的情况下才有可能,而它不应该(始终将变量设置为局部变量、子变量),即使这样,它也不是最优雅的解决方案。

另一个更好的选择可能是:将您的表放在另一个表中:

代码语言:javascript
复制
local Tables = {
   Table_1 = { 1, 2, 3, }
   Table_2 = { 2, 3, 4, }
}

print(Tables["Table_1"])

这使全局范围保持干净,并允许您将整组表作为单个值传递。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66189097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档