Как назначить несколько значений в ключе для таблицы? - PullRequest
3 голосов
/ 16 апреля 2019

Я пытаюсь назначить несколько значений для одной переменной в таблице. Один для имени строки и один для целого числа. Код будет идти:

items = {
potion = "Potion", 100
}

Я не знаю, как формально написать это и как вызывать эти конкретные значения. (Вы называете это так?)

io.write(item.potion.1) --> Potion
io.write(item.potion.2) --> 100

(или что-то еще?)

Пожалуйста, помогите. : I

Ответы [ 2 ]

6 голосов
/ 16 апреля 2019

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

-- identifiers
items = {
  potion = {name = "Potion", value = 100},
}
print(items.potion.name, items.potion.value)

-- numeric indexes
items = {
  potion = {"Potion", 100},
}
print(items.potion[1], items.potion[2])

Я лично предпочитаю первый подход (так как он более удобен в обслуживании, хотя и немного более многословен), но любой из них долженработа.

1 голос
/ 16 апреля 2019

Lua допускает несколько назначений для нескольких переменных.

вроде так:

potion, value = "Potion", 100

но это не может быть сделано внутри определения таблицы.

items = {
    potion = "Potion", 100
}

То, что здесь делает ваш код, устанавливает potion на значение "Potion", а затем , завершает присвоение. Следующим назначением будет 100, которое будет назначено клавише по умолчанию, в данном случае 1.

В стороне таблицы вы заканчиваете каждое назначение ,, поэтому содержимое ваших таблиц равно:

items = {
   potion = "Potion",
   [1] = 100
}

Для достижения желаемого поведения вы можете вкладывать таблицы:

items = {
   potion = {
       "Potion",
       100
   }
}

Этот пример доступен как items.potion[1], а не items.potion.1, потому что запись . нельзя использовать с ключом, начинающимся с цифры.

...