No Programming, No Life

プログラミング関連の話題や雑記

Ruby3 - Rubyの基礎文法 - 条件分岐

概要

ここでは、Rubyの条件分岐の文法について見ていきます。 Rubyでの条件分岐には if else elsifunless 使います。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に書いた処理が実行されます。

casewhen1 then
  処理1
when2 then
  処理2
else
  処理その他
end

ちなみに、お察しの通りthenは省略できます。 また、whenの後の値はカンマで区切ると複数指定できます。

casewhen1, 値2 then
  処理1
when3, 値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 if...else, case, unless

ruby unless文にelsifはないよ。。。 - Qiita

関連記事

Rubyのチュートリアルっぽい記事の一覧 - No Programming, No Life