Lua-эквивалент метода dictionary.get ()?

#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