2017-02-22 9 views
-3

私のC++教師は、ループを抜け出すために休憩を使わなければならないと、私はループ状態について十分に考えていないと言いました。foreachから出よう

foreachループがこのルール(私が一般的に真実であることが分かっている)の例外であることを言及していないか、非常に良い教師btwは、実際にはforeachループを抜け出す方法はない休憩を使って?

私は一般的に尋ねていますが、私にとっては最も興味深いのはJavaまたはPHPです。

編集: これを明確にしていない場合は、ブレークを使用せずにforeach-loopから抜け出す方法があるかと思います。この騒ぎが何であるか、その質問の何が間違っているのかはっきりしない?

+0

実装しようとしましたが、実際に何をしてみましたか? –

+0

あなたの質問があるかどうかわかりません...はい、私はforeach-loopsを実装しました...? – Samarek

+2

私はあなたの先生に同意しません。おそらく、明確に定義された演習や問題の学問界では、彼女にはポイントがあります。しかし、予測不可能なユーザーや膨大なデータセットの現実の世界では、ポイントが継続していないことを知っているときにループから脱却することは、しばしば最もクリーンなソリューションです。 –

答えて

1

foreachループは、」暗黙の以外の任意の終了条件を持っていません反復する項目がもうないので、何らかのひどいハックを使わずに、breakを避けながら早期に脱出することができます(例:例外のスロー、反復されたコレクションの変更、ブール値フラグdontContinueの設定、各反復でのチェックなど)。通常のループの場合

は、確かに常にbreakを使用して回避するための明確な方法があります(ifcontinueを使用して現在の反復を停止し、ループの状態に早期終了条件を入れて)、しかし、このようなアプローチは、より読みやすいコードにつながるかどうかbreakを使用するよりも紛らわしい。いくつかのケースでは


あなたはタスクが行われるために必要なものは何でも終了、または必要なアイテムを見つけたので、あなたはループから抜け出すしたい理由は早いです。そのような場合は、特定の機能を別の方法に入れて、breakの代わりにreturnを使用することを検討してください。

+0

私はすでに考えていたもの、それは完全に理にかなっているからです。基本的に確認だけを探していた。ありがとう – Samarek

-1

実際にPHPの中断を使用してforeachループから抜け出すことができます!

例:

<?php 

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

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

echo $ok; 

ウィル出力1

テストで:ときが

http://phptester.net/

+0

これはループを「break」、 OPの質問によれば? –

+0

@ JiriTousek彼はforeachループがブレークで終わることができないかどうか最初に尋ねました! – Soheyl

+0

その答えは実際に私の質問の反対に適用されます。 – Samarek

関連する問題