【Ruby】条件分岐

まずはifから。

num = 1
if num == 1 
  puts "1:one"
elsif num == 2
  puts "1:two"
else
  puts "1:other"
end

ifの後に続く式が真ならば、その後に続く文が実行されます。
elsif句を書くことができます。さらにelse句も書くことができます。
よく使われる比較演算子に「==」「!=」「<」「<=」「>」「>=」「=~」などがあります。(「=~」は正規表現パターンマッチです)
AND条件(「and」「&&」)、OR条件(「or」「||」)、否定(「not」「!」)などの演算子もあります。

もちろん上記プログラムの実行結果は以下のようになります。

1:one

if文を1行で書く場合は、条件式の後にthenが必要になります。

num = 1
if num == 1 then puts "2:one"
elsif num == 2 then puts "2:two"
else puts "2:other"
end

もちろん上記プログラムの実行結果は以下のようになります。

2:one

ifの否定版のunlessというのもあります。

num = 1
unless num == 1
  puts "3:other"
else
  puts "3:one"
end

上記プログラムの実行結果は以下のようになります。

3:one

ifは式です。つまり値を返すことができるため、以下のようなプログラムが成立します。

num = 1
str = if num == 1 then "4:one"
      elsif num == 2 then "4:two"
      else "4:other"
      end
puts str

場合分けして変数strに値を設定しています。

上記プログラムの実行結果は以下のようになります。

4:one

C言語にある3項演算子を使うこともできます。

num = 1
puts num == 1 ? "5:one" : "5:other"

もちろん上記プログラムの実行結果は以下のようになります。

5:one

if、unlessは文の最後に条件を添える修飾子として使用することができます。

num = 1
puts "6:one" if num == 1

もちろん上記プログラムの実行結果は以下のようになります。

6:one

Rubyでは、false、nil以外が真です。よって0は真となるので、C言語に慣れている人は注意が必要です。

puts "1:true" if true
puts "2:true" if false
puts "3:true" if 0
puts "4:true" if nil

上記プログラムの実行結果は以下のようになります。

1:true
3:true

多分岐の制御にはcaseが使用できます。

num = 1
case num
  when 1, 3
    puts "7:one or three"
  when 2
    puts "7:two"
  else
    puts "7:other"
end

caseの後の式を、whenの後の式と比較します。

上記プログラムの実行結果は以下のようになります。

7:one or three