Как мне сделать имя динамической переменной в Lua? - PullRequest
5 голосов
/ 21 февраля 2011

Я новичок в Lua и у меня возникли некоторые трудности:

Я пытаюсь создать имена динамических переменных:

local tblAlphabet = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};

local count = 0;

for k, v in pairs (tblAlphabet) do

  count = count + 1;

  [v.."button"]  = ui.newButton{ --HOW DO I MAKE THIS WORK? I get syntax error

--some code here

  }

Ответы [ 3 ]

14 голосов
/ 21 февраля 2011

Вы можете создать таблицу, содержащую ваши переменные.

local tblAlphabet = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"}
local vars = {}
for k, v in pairs(tblAlphabet) do
    vars[v .. "_button"] = ui.newButton()
end

Затем вы можете получить доступ к vars через итераторы или прямой доступ (vars.a_button).

8 голосов
/ 21 февраля 2011

не понятно, что вы хотите сделать; но если вы хотите программно создать множество глобальных переменных, просто помните, что глобальные поля являются полями таблицы _G:

_G['anyvar'] = 'something'
print (anyvar)
2 голосов
/ 04 августа 2012

Переменные, которые вы создаете, являются первоклассными значениями, которые не имеют имен.

Вы можете назначить их переменным с именами. Либо локальные переменные, либо в этом случае (поскольку вы хотите сделать это в цикле), имена ключей в таблице (либо таблица глобальных переменных, либо созданная вами таблица).

Вам не нужна таблица данных для создания имен ваших кнопок, поскольку они следуют простому шаблону.

t = {}
for b = string.byte('a'), string.byte('z') do
    c = string.char(b)              -- 'a' to 'z'
    t['button'..c] = ui.newButton() -- something like this
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...