case~when文

はてなブックマークに追加はてなブックマーク Yahoo!ブックマークに登録 ニフティクリップに追加 Livedoor クリップに追加 BuzzurlにブックマークBuzzurlにブックマーク Twitterに投稿  

if~elsif文が長く続く場合は、case~when文で代替すると、コードが見やすくなります。

Rubyのcase~when文は、PHPやCで言うところの、switch~case文の働きに似ています。
使い方も大体同じような感じですが、文の最後に書くデフォルト値として、defaultでなくelseを書きます。
また、CやPHPのswitch~case文では、一つ一つのcase文にbreakをつけますが、Rubyのcase~whenのwhen文には、breakをつけません。

require "date"
 
now_time = DateTime.now.hour
puts "now: #{now_time}"
 
case now_time
when 0..9
    puts "Goog morning !"
when 12
    puts "Lunch time !"
when 10..20
    puts "Hello !"
else
    puts "Good evening !"
end

午後19時20分頃に上記のスクリプトを実行しました。
実行結果。

now: 19
Hello !

「when 10..20」の条件がtrueと評価されますので、「Hello !」が表示されます。
なお、case~when文では、whenで指定した値に一致するかどうかの評価を、「===」演算子を使って判定します。


日時: 2008年06月23日 19:09
コメントを投稿






トラックバック

■この記事のトラックバックURL:
http://www.mapee.jp/mpe334/mt-tb.cgi/331

この記事にトラックバックされる方は、参照先が分かるようにするために、「case~when文」へのリンクをお願いいたします。
以下のHTMLタグをトラックバック送信元ページ内に挿入して下さい。



※この記事へのリンクがない、また関連のないページからのトラックバックは反映されませんので、ご了承下さい。






あわせて読みたいブログパーツ
フィードメーター - Ruby勉強ルーム