简体   繁体   中英

Generalising a set of linked iup handles in Lua

I'm using Lua with IUP and have a number of pairs of IUP handles thus:

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

The number of field pairs (maxFields) is currently 5 but may vary.

At various places in my Lua programme, I need to do something like:

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

I know I can't construct dynamic variable names, but is there a way to write this as a concise loop , rather than:

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

I suggest using Lua tables.

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}
...

Then loop over the elements of the table:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM