Объявление массива в массиве

Пытался сделать массив доступ к которому можно получить таким способом

mas[1].type
mas[1].owner
mas[1].id

Объявил массив так

mas = {[1] = {[type]= "first", [owner] = "412874192", [id] = "64345734"}}

получаю ошибку

table index is nil

Ответы (2 шт):

Автор решения: Alexander Mashin

Квадратные скобки вокруг названий полей не нужны. С ними type и пр. интерпретируются как имена переменных, значения которых должны быть ключами таблицы. Поскольку таких переменных нет, то и ключи оказываются nil.

Кроме того, [1] можно пропустить. Итак:

mas = {{type= 'first', owner = '412874192', id = '64345734'}}
→ Ссылка
Автор решения: Beast Winterwolf

Запомните, что в lua не существует ни массивов, ни объектов, есть только таблицы. Александр дал правильный ответ, я лишь уточню, что в его ответе индекс 1 был выброшен, поскольку он был создан автоматически (если вы не задаёте никакого индекса, то создаётся числовой и итерация начинается с единицы). Но если бы здесь была не единица, а другое число, то вам всё же пришлось бы указать его в квадратных скобках, потому что имя переменной не может начинаться с числа. Так же и с другими символами:

local mas = {
  [3] = {
    ["type-/*+"] = "first",
    owner = "412874192",
    id = "64345734"
  }
}

print(mas[3]["type-/*+"])
→ Ссылка