我对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
或者,还有另一种方法可以使代码保持紧凑吗?
答案 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