Обобщение набора связанных дескрипторов iup в Lua

Я использую Lua с IUP и имею несколько пар дескрипторов IUP, таким образом:

UseField1 = iup.toggle {blah blah blah}
Field1Label = iup.text {blah blah blah}

Количество пар полей (maxFields) в настоящее время равно 5, но может варьироваться.

В разных местах моей программы на Lua мне нужно сделать что-то вроде:

for N in 1,maxFields do
    If UseFieldN.value =="ON" then
      DoSomethingWith(FieldNLabel.value, N)
    end
end

Я знаю, что не могу создавать имена динамических переменных, но есть ли способ написать это как краткий цикл, а не:

If UseField1 =="ON" then DoSomethingWith(Field1Label.value, 1) end
If UseField2 =="ON" then DoSomethingWith(Field2Label.value, 2) end
etc

person ColeValleyGirl    schedule 25.08.2019    source источник


Ответы (1)


Я предлагаю использовать таблицы Lua.

t = {}
t.UseField1 = iup.toggle {blah blah blah}
t.Field1Label = iup.text {blah blah blah}
...

or

t[1] = iup.toggle {blah blah blah}
t[2] = iup.text {blah blah blah}
...

Затем выполните цикл по элементам таблицы:

for index,elem in pairs(t) do 
    If elem.value == "ON" then
      DoSomethingWith(elem.value, N)
    end
end

or

for index,elem in ipairs(t) do -- when using only numeric indices
    If elem.value == "ON" then
      DoSomethingWith(elem.value, N)
    end
end
person Antonio Scuri    schedule 25.08.2019