我想知道是否有可能读出动态变量名? 由于将变量传递给我的脚本的程序只调用它们“in1、in2、in3”等。 希望有任何方法可以形成循环,因为单独处理每个输入非常烦人...
这是我到目前为止尝试过的方法,但它只是给了我一个错误。
for i=1,19,2 do
myvar[i] = ["in"..i]
end
我是 Lua 的新手,但我希望解决方案不是那么困难 :D
编辑: 哦,我会尽力为您提供更多信息。 “主”程序不是用 Lua 编写的,只是设置了这些“in1 ...”变量。它是一种机器人编程软件,内置了很多功能。这就是全部,所以我不能简单地使用其他变量名或数组。所以它不是函数或与 Lua 相关的任何其他内容...... 这是一个小截图 http://www.bilderload.com/daten/unbenanntFAQET.jpg 目前 Lua 脚本只是传递第一个输入。
最佳答案
这取决于您所说的“动态变量名”是什么意思。
局部变量名不存在。局部变量是声明为函数参数或使用 local
关键字的任何变量。局部变量被编译成 Lua 堆栈的偏移量,因此它们的名字不存在。您无法通过名称对某些内容进行索引以获取它们。
全局变量是全局表的成员。因此,这些设置全局变量的方法是等价的:
globalVar = 4
_G.globalVar = 4
_G["globalVar"] = 4
Since the programm that passes the variables to my script calls them just "in1, in2, in3" etc.
将变量传递给脚本的程序无法为它们命名。变量只是值的占位符。它没有该值的所有权。当您的函数获取参数时,您的函数 会为它们命名。
你对你程序的结构没有说太多,所以我真的不能给出好的建议。但是,如果您只想将一些值作为参数并将它们作为输入访问,则可以通过两种方式实现。您可以将包含值的表作为参数,也可以采用可变参数:
function MyFunc1(theArgs)
for i, arg in ipairs(theArgs) do
--Do something with arg.
end
end
function MyFunc2(...)
for i, arg in ipairs({...}) do
--Do something with arg.
end
end
MyFunc1 {2, 44, 22} --Can be called with no () because it takes a single value as an expression. The table.
MyFunc2(2, 44, 22)
关于variables - 在 Lua 中读取动态变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9483741/