今回は、Rubyでの条件分岐の書き方について解説します。
基本的なif 文の文法
基本的なif 文の書式は以下のようになっています。
1 2 3 4 5 6 7 |
if (条件式1) then #thenは省略可能 (条件式1が真のときの処理) elsif (条件式2) then (条件式2が真のときの処理) else (条件式1・2が偽のときの処理) end |
if の条件式1が”真”であるとき、then 以下の処理が実行されます。
条件式1が”偽”だった場合、かつ、elsif の条件式2が"真"だった場合は、elsif のthen 以下の処理が実行されます。
※else if ではなくelsif です。
また、条件式1・2がどちらも"偽"だった場合、else 以下の処理が実行されます。
条件式は上から順に評価されます。条件式が”真”となった時点で処理が実行され、その後の条件式は評価されないので注意しましょう。
また、then は省略ができます。
実際にコードを書いてみましょう。
1 2 3 4 5 6 7 8 9 |
drink = "milk" if drink == "coffee" then puts "UX COFFEE" elsif drink == "milk" then puts "UX MILK" else puts "UX nothing" end |
上記のコードの例では、上から条件式を評価していき、条件式を満たすdrink == "milk" 以下の処理、puts "UX MILK" が実行されます。
1 |
UX MILK |
if 修飾子
条件式や処理の部分が非常に短いとき、if 文の基本的な書式では、長ったらしくみえてしまいスマートではない書き方になることがあります。
そんなときは、以下のようにif 文を書くことができます。
1 |
(条件式が"真"であるときの処理) if (条件式) |
このように簡潔な書き方ができるので、是非活用してみてください。
条件式と処理の式の順番が逆になっていることに注意してください。
実際にコードを書いてみましょう。
1 2 |
age = 20 puts "18歳以上です" if age >= 18 |
実行結果は以下のようになります。
1 |
18歳以上です |
unless
unless 文では、if 文とは逆に、条件式が”偽”であるときに処理が実行される構造になっています。
unless 文の書式は、if 文とほとんど変わりません。
1 2 3 |
unless (条件式) then (条件式が"偽"であるときの処理) end |
unless 文では、elseで続けることはできますが、elsif は使うことができません。
実際にコードを書いてみましょう。
1 2 3 4 5 |
var = "UI" unless var == "UX" then puts "Unknown MILK" end |
実行結果は以下のようになります。
1 |
Unknown MILK |
unless 文はコードをわかりづらくすることが多々あるので、unless 文を書くのであれば、if 文を書いてしまったほうが良いでしょう。