Ruby でアウターサイクルを破るにはどうすればよいですか?
概要
Perl には、次のように外部サイクルを破る機能があります。
AAA: for my $stuff (@otherstuff) {
for my $foo (@bar) {
last AAA if (somethingbad());
}
}
(構文が間違っている可能性があります)。これは、ループ ラベルを使用して、内側のループの内側から外側のループを分割します。 Rubyにも同様のものはありますか?
解決策
スロー/キャッチを考慮してください。通常、以下のコードの外側のループは 5 回実行されますが、throw を使用すると、プロセス内で中断して好きなものに変更できます。この完全に有効な Ruby コードを考えてみましょう。
catch (:done) do
5.times { |i|
5.times { |j|
puts "#{i} #{j}"
throw :done if i + j > 5
}
}
end