- blogs:
- cles::blog
2015/12/07

ruby の break は case を抜けられない

Ruby の break はループからの脱出専用なので、ループでない case を抜けられないことを知らなくてハマってしまったのでメモ。
test.rb
x = 1
case x
when 1
break
puts "1"
else
puts "else"
end
たとえばこんなプログラムを書いて実行してみるとわかりますが、break の部分で LocalJumpError になってしまいます。
$ ruby test.rb
test.rb:4: unexpected break (LocalJumpError)
ドキュメントを改めて調べてみると、以下のような記載があり case を抜けられないと明記されています。
制御構造 (Ruby 2.0.0)
break はもっとも内側のループを脱出します。ループとは
while
until
for
イテレータ
のいずれかを指します。C 言語と異なり、break はループを脱出する作 用だけを持ち、case を抜ける作用は持ちません。
この部分の代替方法について記載がないので困りましたが、以前大域脱出の時に使った throw / catch を使ってひとまず実装することができました。
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/8103
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(112094)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110735)
3 . 年次の人間ドックへ(110338)
4 . 2023 年分の確定申告完了!(1つめ)(109890)
5 . 三菱鉛筆がラミーを買収(109790)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110735)
3 . 年次の人間ドックへ(110338)
4 . 2023 年分の確定申告完了!(1つめ)(109890)
5 . 三菱鉛筆がラミーを買収(109790)
cles::blogについて
Referrers