Вот do-while да нужен иногда, у меня есть где-то пример, где я решил рекурсией в итоге
Я хз, зараз усюди є labelled loops, кому goto в 2к22 всрався - мені зовсім незрозуміло
В ruby нет ни того ни другого кажется)0)
Я на рубі не пишу, хз
абстрактный пример я приведу пример func() { if (some) do_some_3() goto lab1 if (some2) do_some_4() goto lab1 if (some3) do_some_5() goto lab1 if (some4) do_some_5() do_some_6() do_some_7() goto lab1 if (some5) do_some_8() goto lab2 if (some6) do_some_9() goto lab2 if (some7) do_some_10() goto lab1 if (some8) do_some_11() do_some_12() do_some_13() goto lab2 goto lab2 lab1: do_some1(); return; lab2: do_some2(); return; }
Lab1 і lab2 мають бути винесені в функції
это не повысит читабельность. это добавит лишнее выделение на стек
Заинлайнится в большинстве случаев
Це покращить читабельність
А версія з goto може бути неефективною для кешування в процесорі
я так не считаю
Я так вважаю
Хм, звучит логично. Но мне кажется (лично мое мнение) менее подвержен ошибками подход где мы вместо кучи if используем один case по условиям и выносим goto в функции, а-ля: case when some do_some_3() lab1() when some1 do_some_4() lab1() when ... ... end Но в абстрактном коде тяжело понять что из них читаемее. Насчёт стека — будет либо инлайнинг если функции маленькие, либо tail call optimization, так что это не проблема.
Обсуждают сегодня