【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
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