variables - 在 Lua 中读取动态变量名

标签 variables dynamic lua

我想知道是否有可能读出动态变量名? 由于将变量传递给我的脚本的程序只调用它们“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/

相关文章:

javascript - 当动态给出类和 id 时,单击事件不会触发并且不会调用 css

c++ - 在 ubuntu 上编译 lsnes 模拟器时出错

node.js - 用动态/脚本语言构建松散耦合系统的设计模式

lua - 我如何传递这些引用不同函数的参数?

jquery - 使用jquery以表格形式显示总价

java - 调用方法,将变量重命名为新变量

c# - asp.net 使用 javascript 隐藏下拉列表中的特定项目

java - 如何在 Java 中存储变量供以后使用?

python - 如何在从另一个脚本中执行 python 脚本后动态导入变量

ruby-on-rails - 如何在 Rails 中动态调用或调用类?