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

StackOverflow https://stackoverflow.com/questions/513239

  •  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) конец яблоко зеленое оранжевое оранжевый банан желтый

От : http://lua-users.org/wiki/TablesTutorial

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

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

но нет

local petFamilies = {["Bat"]=["Cunning"],["Bear"]=["Tenacity"]};
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top