#lua #lua-table #pico-8
Вопрос:
Как получить доступ к словарю с помощью параметра?
В python я могу сделать dictionary.get(param)
, есть ли эквивалент этому в lua?
Я хочу сделать что-то вроде этого:
function make_object_from_flag(x, y, flag)
local flag_obj = {
[1] = make_impassable_object(x, y),
[2] = make_coin(x,y),
[4] = make_screen_transition_object(x, y),
}
flag_obj.get(flag)
end
Комментарии:
1.
flag_obj[flag]
Ответ №1:
Lua имеет только одну структуру данных, которая, по сути, представляет собой карту (или словарь), просто называемую «таблицей».
Индексирование таблиц в Lua обычно выполняется с использованием скобок []
, точно так же, как python работает с массивами.
Итак, в принципе, как отметил Егор Скриптунов в своем комментарии, вы хотите flag_obj[flag]
получить доступ к значению, связанному с ключом flag
в таблице flag_obj
.
Обратите внимание, однако, что использование битовых флагов, как это делается в C, очень редко и не очень эффективно в Lua, и обычно это не следует делать, если для этого нет веской причины.
Комментарии:
1. Большое спасибо. Я использую флаги, потому что я кодирую в pico-8, и это встроенная система. По какой-то причине flag_obj[флаг] все еще выдает мне синтаксическую ошибку, хотя я собираюсь предположить, что это что-то связанное с pico