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で指定した値に一致するかどうかの評価を、「===」演算子を使って判定します。
■この記事のトラックバックURL:
http://www.mapee.jp/mpe334/mt-tb.cgi/331