Ruby3 - Rubyの基礎文法 - 条件分岐
概要
ここでは、Rubyの条件分岐の文法について見ていきます。
Rubyでの条件分岐には if else elsif や unless 使います。caseも使えます。少し変わりどころだと、後置if, 後置unlessもあります。
if文
まずは if ですが、以下のように記述し、条件 が 真 の場合に 処理 が実行されます。
条件 が 真 でない場合は処理は実行されません。
if 条件 then 処理 end
ちなみに、thenは省略可能で、以下のようにも書けます。
if 条件 処理 end
こちらの方がスッキリしていますね。
実行例)
ifels1.rb
a = 10 if a > 5 then puts 'aは5より大きい' end
$ ruby ifels1.rb aは5より大きい
else文
ifは条件に合致する場合でしたが、elseは条件に合致しなかった場合に処理をさせたい場合に使います。
if 条件 then 処理1 else 処理2 end
この場合だと、 条件に合致しなければ、処理2の部分が実行されます。
実行例)
ifels2.rb
a = 3 if a > 5 then puts 'aは5より大きい' else puts 'aは5より大きくない' end
$ ruby ifels2.rb aは5より大きくない
elsif文
ifの条件は満たさなかった時に、その次に判定する条件を書きたい場合にはelsifを使います。
ifels3.rb
a = 40 if a > 50 then puts 'aは50より大きい' elsif a > 20 then puts 'aは50より大きくはないが、20よりは大きい' else puts 'aは20以下' end
$ ruby ifels3.rb aは50より大きくはないが、20よりは大きい
unless文
ifの逆の構文になります。〜じゃなかったら処理を実行するといった感じです。
unless1.rb
a = 10 unless a > 10 then puts 'aは10より大きくない' end
$ ruby unless1.rb aは10より大きくない
ちなみにunlessにはelseは付けられますが、elsifは付けられません。
後置if, 後置unless
式の末尾にif 条件 や unless 条件 を置いて、条件 が真、または偽なら前部分の式を実行するというクールなやつです。利用はお好みで。
if_unless_modifier1.rb
a = 10 puts 'aは10以上です' if a >= 10
この場合だと puts 〜 の部分が実行されるかどうかは aの値による感じです。
$ ruby if_unless_modifier1.rb aは10以上です
if_unless_modifier2.rb
a = 10 puts 'aは10より大きくない' unless a > 10
$ ruby if_unless_modifier2.rb aは10より大きくない
case文
caseは複数の条件分岐を一気にこなしたい場合に利用します。caseの後に比較したい 値 を置いて、whenの後に置いた値とマッチする場合、その処理が実行されます。whenは複数配置でき、すべてのwhenにマッチしなかった場合はelseに書いた処理が実行されます。
case 値 when 値1 then 処理1 when 値2 then 処理2 else 処理その他 end
ちなみに、お察しの通りthenは省略できます。
また、whenの後の値はカンマで区切ると複数指定できます。
case 値 when 値1, 値2 then 処理1 when 値3, 値4 then 処理2 else 処理その他 end
使用例)
case1.rb
age = 14 case age when 0, 1, 2 puts "赤ちゃん" when 3 .. 6 puts "幼児" when 7 .. 12 puts "小学生" when 13 .. 18 puts "中高生" else puts "大人!" end
$ ruby case1.rb 中高生
参考
ruby unless文にelsifはないよ。。。 - Qiita