Как быстро инициализировать ассоциативную таблицу в Lua?
-
21-08-2019 - |
Вопрос
В 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",
...}
нахождение результата с помощью : имя_таблицы.ключ=значение
Таблицы как словари
Таблицы также могут использоваться для хранения информации, которая не индексируется численно или последовательно, как в случае с массивами.Эти типы хранения иногда называются словарями, ассоциативными массивами, хэшами или типами отображения .Мы будем использовать словарь терминов, где пара элементов имеет ключ и значение.Ключ используется для установки и извлечения значения, связанного с ним.Обратите внимание, что так же, как и массивы, мы можем использовать формат table[ключ] = value для вставки элементов в таблицу.Ключ не обязательно должен быть числом, это может быть строка или, если уж на то пошло, практически любой другой объект Lua (за исключением nil или 0/0).Давайте создадим таблицу с некоторыми парами ключ-значение в ней:
t = { яблоко ="зеленое", апельсин="оранжевый", банан = "желтый" } для k, v в парах (t) выведите (k,v) конец яблоко зеленое оранжевое оранжевый банан желтый
Чтобы инициализировать ассоциативный массив, содержащий строковые ключи, которым соответствуют строковые значения, вы должны использовать
local petFamilies = {["Bat"]="Cunning",["Bear"]="Tenacity"};
но нет
local petFamilies = {["Bat"]=["Cunning"],["Bear"]=["Tenacity"]};