Подтвердить что ты не робот

Как быстро инициализировать ассоциативную таблицу в Lua?

В Lua вы можете создать таблицу следующим образом:

local t = { 1, 2, 3, 4, 5 }

Однако, я хочу создать ассоциативную таблицу, я должен сделать это следующим образом:

local t = {}
t['foo'] = 1
t['bar'] = 2

Ниже приведена ошибка:

local t = { 'foo' = 1, 'bar' = 2 }

Есть ли способ сделать это аналогично моему первому фрагменту кода?

4b9b3361

Ответ 1

Правильный способ написать это либо

local t = { foo = 1, bar = 2}

Или, если ключи в вашей таблице не являются юридическими идентификаторами:

local t = { ["one key"] = 1, ["another key"] = 2}

Ответ 2

Я верю, что это работает немного лучше и понятно, если вы посмотрите на это как на

local tablename = {["key"]="value",
                   ["key1"]="value",
                   ...}

найти результат с помощью: tablename.key = значение

Таблицы как словари

Таблицы также могут использоваться для хранения информации, которая не индексируется численно или последовательно, как и с массивами. Эти типы хранения иногда называемые словарями, ассоциативными массивами, хэшами или картографированием типы. Мы будем использовать термин словарь, где пара элементов имеет ключ и значение. Ключ используется для установки и получения значения, связанного с этим. Обратите внимание, что так же, как массивы, мы можем использовать таблицу [key] = value формат для вставки элементов в таблицу. Ключ не обязательно должен быть числом, это может быть строка или, если на то пошло, почти любой другой объект Lua (кроме nil или 0/0). Позвольте построить таблицу с некоторым значением ключа пары в нем:

t = {apple = "green", orange = "orange", banana = "yellow" }   для k, v в парах (t) do print (k, v) end apple green orange orange banana yellow

from: http://lua-users.org/wiki/TablesTutorial

Ответ 3

Чтобы инициализировать ассоциативный массив, который имеет строковые ключи, сопоставляемые строковыми значениями, вы должны использовать

local petFamilies = {["Bat"]="Cunning",["Bear"]="Tenacity"};

но не

local petFamilies = {["Bat"]=["Cunning"],["Bear"]=["Tenacity"]};