169 похожих чатов

Чятик, подскажи, а в луа есть свитчкейсы? Чот гугл показывает

мне очень странные костыли. Это я не правильно гуглю или кроме страшных костылей ничего нет?

10 ответов

9 просмотров

что за костыли? для чего конкретно свитч нужен?

Aleksey-Sviridkin Автор вопроса
UtoECat
что за костыли? для чего конкретно свитч нужен?

local c_tbl = { [1] = add, [2] = save, } local func = c_tbl[choice] if(func) then func() else print " The program has been terminated." print " Thank you!"; end например такое предлагает стаковерфлоу

коробочной функции нет

Aleksey Sviridkin
local c_tbl = { [1] = add, [2] = save, } loca...

это не костыль. Это может быть очень даже эффективным решением, если очень много условий надо будет проверять (O(1) в лучшем случае). При условии, что таблица с кейсами только один раз создаётся, конечно. И функции можно тоже прямо в этой таблице объявить. local t ={ ["exit"] = function() os.exit() end, ['stat'] = function() print(some_stats()) end, -- ... }

в луа минимум оптимизации байткода... За исключением случаев когда вы используете luajit или luau конечно... если не углубляться в детали.... lua сфокусирована на минимальном синтаксисе, без кучи ключевых слов. switch/case не добавил бы ничего принципиально нового, чего нельзя было-бы решить через if statement. Ну и, я надеюсь, вы в курсе про elseif. городить if a then ... else if b then ... end end не надо

Я более чем уверен, что на это были причины, в виде сложности той-же компиляции всего этого. (В луа : уже используется как синтакисческий сахар над obj.call(obj) => obj:call(), поэтому я даже не могу себе представить как это могло выглядеть вообще в итоговом варианте... А так-же как обрабатывать такую вещь как falltrough... и вообще нужен-ли он или нет. У elseif есть смысл - он, в отличии от последовательных if, обрабатывается только если условие не сработало. А насаживать в глубину if на if - не особо удобно. я не хочу особо разглагольствовать на тему дизайна языка... это, как минимум, не продуктивно...

1. Выражение. a = b < 10 and 0 or b == 10 and 10 or 100 2. Варианты вроде тех которые подсказали, в виде таблички с ключами.

Похожие вопросы

Обсуждают сегодня

Может кто встречал такое? Один набор данных, но в одном столбце кодировка нормальная, а в другом ироглифы. Как такое может быть?
Alexander
23
Всем привет. Подскажите, пожалуйста, почему не ищет русскую букву а? А английскую ищет. Полагаю что-то с кодировкой. Но как исправить это? procedure TfrmMain.btnOpenFileClic...
Евгений
7
И к какой архитектуре привязана Java?
Dmitry Olshansky
17
коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
@Aiwan что такое база образца?
Alexey
27
Не многие знают, а кто знает, тот уже успел забыть, что в далёком 2004 году эта игра произвела настоящий фурор, настолько революционной была технология, применяемая для её соз...
ICCID
4
Как это поможет если в архив положили папку?
Sasha Beep
8
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
30
Хотя у меня сейчас есть более сложная задача, вот её думаю: как объяснить челу переходного возраста противоположного полу, обучающегося в польском колледже (а-ля наш техникум)...
Вячеслав Кузьменко
15
Короче я тут узнал полный пиздец Что кучу постов которые я создавал через posted Спустя время не могу редактировать и менять Мол телега возвращае ошибку Это реально так ...
inc.
13
Карта сайта