Lua变量变量

时间:2018-04-20 15:37:29

标签: lua

我对Lua很新,我在io控制器上使用它,它对脚本大小有严格的限制,所以我需要在这些限制范围内工作。

我有许多我控制的继电器(1-64)。当事件发生时我需要关闭继电器,但是我关闭的继电器可以改变。 我有一个保存继电器号的变量,我需要关闭这个继电器。

我可以使用I语句实现这一点:

if variable = 1 then
  io.relay1=0 //Turns off the relay
end
else if variable = 2 then
  io.relay2=0 //Turns off the relay
end

然而,当重复64个继电器时,这将很快成为一个大脚本。是否可以使用变量值作为继电器名称来寻址继电器?类似于以下内容:

io.relay{variable}=0 //Turns off the relay1/2/3/4/5 etc. depending on the value of variable

或者,还有另一种方法可以使代码保持紧凑吗?

2 个答案:

答案 0 :(得分:3)

使用

io["relay".. variable]=0 

但是,每次都会创建一个字符串。

如果您可以更改io的工作方式,更好的解决方案是让io.relay成为一个表,然后只需io.relay[variable]=0

答案 1 :(得分:0)

为了避免lhf的答案所带来的字符串分配问题,你可以预先生成一个字符串表并将其编入索引:

relay_names = {}
for k = 1,64 do
  relay_names[k] = "relay"..tostring(k)
end

然后设置IO状态看起来像这样:

io[relay_names[1]] = 1