Объявление массива в массиве
Пытался сделать массив доступ к которому можно получить таким способом
mas[1].type
mas[1].owner
mas[1].id
Объявил массив так
mas = {[1] = {[type]= "first", [owner] = "412874192", [id] = "64345734"}}
получаю ошибку
table index is nil
Ответы (2 шт):
Квадратные скобки вокруг названий полей не нужны. С ними type и пр. интерпретируются как имена переменных, значения которых должны быть ключами таблицы. Поскольку таких переменных нет, то и ключи оказываются nil.
Кроме того, [1] можно пропустить. Итак:
mas = {{type= 'first', owner = '412874192', id = '64345734'}}
Запомните, что в lua не существует ни массивов, ни объектов, есть только таблицы. Александр дал правильный ответ, я лишь уточню, что в его ответе индекс 1 был выброшен, поскольку он был создан автоматически (если вы не задаёте никакого индекса, то создаётся числовой и итерация начинается с единицы). Но если бы здесь была не единица, а другое число, то вам всё же пришлось бы указать его в квадратных скобках, потому что имя переменной не может начинаться с числа. Так же и с другими символами:
local mas = {
[3] = {
["type-/*+"] = "first",
owner = "412874192",
id = "64345734"
}
}
print(mas[3]["type-/*+"])