2017-02-22 21 views
-3

Мой учитель C++ однажды сказал мне, что если мне нужно использовать перерыв, чтобы выйти из цикла, я недостаточно сообразил о состоянии цикла.Выйдите из зала

Так ли она (очень хороший учитель кстати) просто не упоминает о том, что петли foreach являются исключением из этого правила (которое, как правило, я считаю истинным), или действительно есть способ выйти из цикла foreach без используя перерыв?

Я спрашиваю в целом, но наиболее интересным для меня будет Java или PHP.

Редактировать: В случае, если я не прояснил это, мне интересно, есть ли способ выйти из цикла foreach без использования перерыва. Не уверен, что это за волнение, что случилось с этим вопросом?

+0

Вы пытались реализовать и посмотреть, что он на самом деле делает? –

+0

Я не уверен, если я получу ваш вопрос ... да, я применил foreach-loops ...? – Samarek

+2

Я не согласен с вашим учителем. Возможно, в академическом мире четко определенных упражнений и проблем у нее есть точка. Но в реальном мире непредсказуемых пользователей и массивных наборов данных, вырыв из цикла, когда вы знаете, что нет смысла продолжать, часто является самым чистым решением, которое у вас есть. –

ответ

1

foreach петли не имеют каких-либо условий выхода за неявного исключением «, когда больше нет элементов для перебора ", поэтому невозможно вырваться из них на раннем этапе, избегая при этом break без какого-либо ужасного взлома (например, исключение исключения, изменение итерационной коллекции, установка булевого флага dontContinue и проверка его на каждой итерации и т. д.).

Для обычных петель, там действительно всегда есть очевидный способ избежать использования break (остановки текущей итерации с использованием continue из if, и поставил условие раннего выхода в условие цикла в), однако, приводит ли такой подход к более читаемому коду чем использование break является спорным.


В некоторых случаях причина для вас хочет, чтобы вырваться из петли рано, потому что вы закончили любую задачу, нужно было сделать, или нашли нужный пункт. В таких случаях рассмотрим возможность включения конкретных функций в отдельный метод и используя return вместо break.

+0

Что я уже подумал, так как это имеет смысл. Был в основном просто ищет подтверждение. благодаря – Samarek

-1

На самом деле вы можете выйти из цикла foreach, используя перерыв в PHP!

Пример:

<?php 

$test = array("1", "2"); 

foreach($test as $ok) 
{ 
    break; 
} 

echo $ok; 

Выведет 1

Тест на:

http://phptester.net/

+0

Как это выйти из цикла без использования 'break', в соответствии с вопросом ОП? –

+0

@JiriTousek Он просто спросил сначала, если петля foreach не может закончиться перерывом! – Soheyl

+0

Этот ответ действительно применим к противоположному моему вопросу. – Samarek