Ответ 1
Правильный способ написать это либо
local t = { foo = 1, bar = 2}
Или, если ключи в вашей таблице не являются юридическими идентификаторами:
local t = { ["one key"] = 1, ["another key"] = 2}
В Lua вы можете создать таблицу следующим образом:
local t = { 1, 2, 3, 4, 5 }
Однако, я хочу создать ассоциативную таблицу, я должен сделать это следующим образом:
local t = {}
t['foo'] = 1
t['bar'] = 2
Ниже приведена ошибка:
local t = { 'foo' = 1, 'bar' = 2 }
Есть ли способ сделать это аналогично моему первому фрагменту кода?
Правильный способ написать это либо
local t = { foo = 1, bar = 2}
Или, если ключи в вашей таблице не являются юридическими идентификаторами:
local t = { ["one key"] = 1, ["another key"] = 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
Чтобы инициализировать ассоциативный массив, который имеет строковые ключи, сопоставляемые строковыми значениями, вы должны использовать
local petFamilies = {["Bat"]="Cunning",["Bear"]="Tenacity"};
но не
local petFamilies = {["Bat"]=["Cunning"],["Bear"]=["Tenacity"]};