как я могу присвоить имена таблиц переменным?

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

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

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

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

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


lua
person gregf    schedule 07.11.2008    source источник


Ответы (1)


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

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

person tjlevine    schedule 07.11.2008
comment
Это не проблема; петля была в порядке; он должен был использовать t[t.name] = i вместо t.name = i - person Doug Currie; 08.11.2008