Как выйти из if
Перейти к содержимому

Как выйти из if

  • автор:

Как выйти из условия if

Какие существуют методы для преждевременного выхода из предложения if ?

Иногда я пишу код и хочу поставить оператор break внутри предложения if , только чтобы помнить, что они могут использоваться только для циклов.

Давайте рассмотрим следующий код:

Я могу подумать об одном способе сделать это: предполагая, что случаи выхода выполняются внутри вложенных операторов if, заверните оставшийся код в блоке большего размера. Пример:

Проблема заключается в том, что больше мест выхода означает более вложенные/отступы.

В качестве альтернативы, я мог бы написать свой код, чтобы предложения if были как можно меньше и не требовали каких-либо выходов.

Кто-нибудь знает о хорошем/лучшем способе выхода из предложения if ?

Если есть какие-либо связанные else-if и else, я полагаю, что выход будет пропустить их.

Как выйти из if

user avatar

Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.13.42356

begemot_sun

Потому что какой-то недалекий идиот на php.net вставил картинки.
0baa1b9fae6aec55bbb73037f3016001-xkcd-go
Детский сад, ейбогу. Если такой умный, то уберите его нахрен из языка и нефиг фсякую лажу пороть, кто лучше Виндоус или Линукс. Макороны едят вилкой, а суп ложкой — это два разных инструмента, но которыми едят, но если ты пытаешься есть суп вилкой, то ты точно долбашлеп. Но так как в ядре PHP, кто-то принмает решение, что оставить в языке, а что нет, поняли, что афтор картинки не далек и оставили goto, значит на то есть весомые причины.
goto метка; //ecли if
break X; и continue; // если цекличные операторы while, for, foreach
почему бы и нет, если перепрыгнуть пару правил в последовательности.
А не херачить воду вилкой.

Выход из условия if

begemot_sun

Потому что какой-то недалекий идиот на php.net вставил картинки.
0baa1b9fae6aec55bbb73037f3016001-xkcd-go
Детский сад, ейбогу. Если такой умный, то уберите его нахрен из языка и нефиг фсякую лажу пороть, кто лучше Виндоус или Линукс. Макороны едят вилкой, а суп ложкой — это два разных инструмента, но которыми едят, но если ты пытаешься есть суп вилкой, то ты точно долбашлеп. Но так как в ядре PHP, кто-то принмает решение, что оставить в языке, а что нет, поняли, что афтор картинки не далек и оставили goto, значит на то есть весомые причины.
goto метка; //ecли if
break X; и continue; // если цекличные операторы while, for, foreach
почему бы и нет, если перепрыгнуть пару правил в последовательности.
А не херачить воду вилкой.

Aliance

  • Facebook
  • Вконтакте
  • Twitter

Оборачиваем в любой цикл. Перед закрывающей скобкой цикла ставим break.
В условии, где нужно выйти — тоже break.

Ну и стОит заметить, что если не пугаться goto, то ровно так же можно заюзать и его.
(в дизасме получится в точности то же, что и с циклами)

  • Facebook
  • Вконтакте
  • Twitter
  • Facebook
  • Вконтакте
  • Twitter
  • Facebook
  • Вконтакте
  • Twitter

вообще вопрос дебильный. что значит «выйти из условия»? условие уже пройдено, больше выполняться не будет и даже если ничего не делать второй раз в условие непопасть.

Если перед условием стоят операторы организации цикла, но автор об этом вроде не закикается.

  • Facebook
  • Вконтакте
  • Twitter

Veles123

А по большому счету не надо ничего делать. Просто всё что требуется делать запихиваем в блок true второго условия и всё.

Логика проста. Если сработало первое условие и не сработало второе условие — не делать ничего. Циклов как говорилось комментарием выше не наблюдается.

  • Facebook
  • Вконтакте
  • Twitter
  • Facebook
  • Вконтакте
  • Twitter
  • Facebook
  • Вконтакте
  • Twitter

Aliance

назвал условия и блоки кода для наглядности. Можно отрефакторить это так:

блок 1 следует вынести в какую-то функцию, видимо, чтобы избежать дублирования.
Ну и плюс не факт, что так получится, зависит еще, как минимум, от логики вычисления А и В.
if получился сомнительный, конечно, но как вариант.

  • Facebook
  • Вконтакте
  • Twitter

Alexious_sh

  • Facebook
  • Вконтакте
  • Twitter

pi314

Алексей, изучаю js смотрю видосики и дошел до вот такой темы

ТВОЯ СТРОЧКА КОДА ПРОСТО ПОМОГЛА РЕШИТЬ МНЕ ЭТУ ПРОБЛЕМУ, СПАСИБО ДРУЖИЩЕ А ТО Я САМ ПРИДУМАЛ КОД А КАК ВЫЙТИ ИЗ IF, Я Не знал. Просто эта строчка позволила не выводить else если я отвечал правильно. Спасибо тебе огромное большое. Хоть и более 3х лет прошло! Счастья и успеха и благополучия тебе братик!

How to break out of an IF statement

Is there a possibility to go to that code after ifs without using any go to statement or extracting rest of the code to the other method?

Yes, I know Else 😉
But this code is farly long and should be run IF the first IF is false and when the first IF is true and the second is false. So extracting a method I think is the best idea.

Peter Mortensen's user avatar

14 Answers 14

To answer your question:

Dai's user avatar

You can use a goto to drop past some code. In the example, if thing1 is true then the check for things2 is bypassed.

Binkan Salaryman's user avatar

Engineer's user avatar

This is a variation of something I learned several years back. Apparently, this is popular with C++ developers.

First off, I think I know why you want to break out of IF blocks. For me, I don’t like a bunch of nested blocks because 1) it makes the code look messy and 2) it can be a PITA to maintain if you have to move logic around.

Consider a do/while loop instead:

The do/while loop is guaranteed to run only once just like an IF block thanks to the hardcoded false condition. When you want to exit early, just break .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *