- blogs:
- cles::blog
« 振替乗車票は廃止されてる? :: CentOS 6.6 がリリースに »
2014/10/30

Ruby の大域脱出

Ruby でネストしたループから脱出する(大域脱出)方法を忘れてしまっていたので、忘れないようにメモ。
Java の大域脱出はラベル付き break*1 / continue *2で実現されていますが、Ruby は Kernel.#throw*3 / Kernel.#catch*4 で実現されています。
ラベルを渡すこと以外は raise / rescure と同じような感じですね。
例えばネストした配列があって、これを順に取り出して 100 が見つかったら終了という処理はこんな感じで書けます。
arrs = [[1,2,3,4,5], [10,20,30,40,50], [100,200,300,400,500], [1000,2000,3000,4000,5000] ]
catch(:break) do
arrs.each do |arr|
arr.each do |n|
puts "n = #{n}"
throw :break if n == 100
end
end
end
実際に実行するとこんな感じ。うまく動きました。
n = 1
n = 2
n = 3
n = 4
n = 5
n = 10
n = 20
n = 30
n = 40
n = 50
n = 100
- *1: 14.15. The break Statement - The Java Language Specification, Java SE 8 Edition
- *2: 14.16. The continue Statement - The Java Language Specification, Java SE 8 Edition
- *3: module function Kernel.#throw
- *4: module function Kernel.#catch
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/7157
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
« 振替乗車票は廃止されてる? :: CentOS 6.6 がリリースに »
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(111987)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110620)
3 . 年次の人間ドックへ(110250)
4 . 2023 年分の確定申告完了!(1つめ)(109793)
5 . 三菱鉛筆がラミーを買収(109690)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110620)
3 . 年次の人間ドックへ(110250)
4 . 2023 年分の確定申告完了!(1つめ)(109793)
5 . 三菱鉛筆がラミーを買収(109690)
cles::blogについて
Referrers