Variables 读取Lua中的动态变量名

Variables 读取Lua中的动态变量名,variables,dynamic,lua,Variables,Dynamic,Lua,我想知道是否有可能读出动态变量名? 因为将变量传递给脚本的程序只调用“in1、in2、in3”等。 希望有任何方法可以创建一个循环,因为单独处理每个输入非常烦人 这是我到目前为止尝试过的,但它只是给了我一个错误 for i=1,19,2 do myvar[i] = ["in"..i] end 我对Lua还很陌生,但我希望解决方案没有那么难:D 编辑: 哦,我会给你更多的信息。“Main”程序不是用Lua编写的,只是设置了see“in1…”变量。它是一种机器人编程软件,内置了许多功能。这就是全

我想知道是否有可能读出动态变量名? 因为将变量传递给脚本的程序只调用“in1、in2、in3”等。 希望有任何方法可以创建一个循环,因为单独处理每个输入非常烦人

这是我到目前为止尝试过的,但它只是给了我一个错误

for i=1,19,2 do
myvar[i] = ["in"..i]
end 
我对Lua还很陌生,但我希望解决方案没有那么难:D

编辑:
哦,我会给你更多的信息。“Main”程序不是用Lua编写的,只是设置了see“in1…”变量。它是一种机器人编程软件,内置了许多功能。这就是全部,所以我不能简单地使用其他变量名或数组。所以它不是一个函数或任何其他与Lua相关的东西。。。 这里是一个小截图
目前,Lua脚本只传递了第一个输入。

无论是谁编写了吐出这些“动态变量”的代码,都做得不好。拥有它们是一个坏习惯,可能会导致数据丢失、全局名称空间混乱

如果您可以更改它,那么最好只输出一个包含结果的表

也就是说,您的解决方案离您不远了,但是,.i中的
[“in]
不是有效的Lua语法。你什么都没做。如果这些变量是全局变量,则代码应为:

for i=1,19,2 do
    myvar[i] = _G["in"..i]
end

这将从全局表中读取变量包含的值。

这取决于“动态变量名”的含义

局部变量的名称不存在。局部变量是声明为函数参数或带有
Local
关键字的任何变量。局部变量被编译成偏移量到Lua堆栈中,因此它们的名称不存在。您不能通过名称索引某个对象来获取它们

全局变量是全局表的成员。因此,设置全局变量的这些方法是等效的:

globalVar = 4
_G.globalVar = 4
_G["globalVar"] = 4
因为将变量传递给脚本的程序只调用“in1、in2、in3”等

将变量传递给脚本的程序无法命名它们。变量只是值的占位符。它对该价值没有所有权。当您的函数获得参数时,您的函数就可以命名它们

你没有对你的课程结构说太多,所以我不能给出好的建议。但是,如果您只想将一些值作为参数,并将它们作为输入访问,那么可以通过两种方式实现。可以使用包含值的表作为参数,也可以使用varargs:

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)
试试这个

myvar={in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11, 12、13、14、15、16、17、18、19}

如果变量作为全局变量传递,或者

myvar = {...}

如果变量作为参数传递给脚本。

如果您打印得到的确切错误,而不是仅仅说“It just gives me error”(它只是给了我一个错误),这会有所帮助。抱歉,这里是:“第2行:靠近“[”的意外符号”你不能让它把这些变量导出到一个表中吗?那会简化很多事情。哦,我会给你更多的信息。“主”程序不是用Lua编写的,只需将see设置为“in1…”变量。它是一种机器人程序软件,内置了很多功能。这就是全部,所以我不能简单地使用其他变量名或数组。所以它不是一个函数或任何与Lua相关的东西…@user1238052:首先,你需要把这个问题放到你的问题中。使用“编辑”按钮。其次,它是如何设置这些变量的?向我们展示它用来设置变量的代码,并向我们展示如何调用您的Lua函数。这就是问题所在,没有其他Lua代码!我做了一个小屏幕截图来说明情况:@user1238052:我没有说发布Lua代码。我说的是发布代码。必须有东西执行这个Lua脚本.Post这是什么以及它是如何传递数据的。如果其中一个InputValue发生变化,这个lua脚本总是会执行。很抱歉,我无法向您提供有关这个过程的更多信息,因为我没有传递输入的程序的源。嗯,我试过了,但似乎变量不是全局变量。我写了这篇文章我自己编写代码,但到目前为止我还没有用Lua做任何事情。我只需要它来简化一些逻辑元素。