как я могу присвоить имена таблиц переменным? - PullRequest
2 голосов
/ 07 ноября 2008

У меня есть таблица в lua с некоторыми данными.

sometable = { 
    {name = "bob", something = "foo"},
    {name = "greg", something = "bar"}
}

Затем я хочу просмотреть таблицу и присвоить каждому имени имя в качестве переменной. Новичок в Луа и попробовал это так.

for i,t in ipairs(sometable) do
    t.name = i
end

Я тогда предполагал, что print ("name1", bob) даст мне name1 = 1. Сейчас я получаю ноль. Так что я возвращаюсь к своему уродливому статическому списку переменных, пока какая-то добрая душа не скажет мне, как я идиот.

Ответы [ 2 ]

4 голосов
/ 08 ноября 2008

sometable = {{name = "bob", что-то = "foo"}, {name = "greg", что-то = "bar"}}

для i, t в ipairs (иногда) сделать t [t.name] = i end

для i, t в ipairs (иногда) для j, u в парах (t) для печати (j, u) end end

имя боб

что-то фу

Боб 1

Грег 2

что-то бар

имя Грег

вернуть sometable [1] .bob

1>

0 голосов
/ 07 ноября 2008

Функция ipairs будет выполнять итерации только по нумерованным таблицам в порядке возрастания.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...