4-2-3 条件分岐の構文と比較演算子の種類を理解しよう

if文、unless文の基本的な構文

if文の基本的な構文は以下のようにまとめることができます。

  • ifの後に半角スペースを記述する
  • 半角スペースの直後にtrueまたはfalseで評価される条件式を記述する
  • 改行した後に条件式がtrueだった場合に実行したい処理を記述する
  • 実行したい処理を記述し終えたらif文の終了を意味するendを記述する
if 条件式
  # 条件式がtrueの場合に実行したい処理を記述
  ...
end

unless文の構文も同様ですが、unlessの場合は条件式がfalseの場合にunless〜endで囲まれた処理が実行されます。

unless 条件式
  # 条件式がfalseの場合に実行したい処理を記述
  ...
end

なお、実行したい処理はif文より半角スペース2つを入れて字下げ(インデント)しています。

実はRubyでは、インデントしなくてもちゃんとif文を解釈してくれます。

しかし、インデントしないと人が読んで分かりにくいので、一般的なコーディング規約ではインデントを推奨しています。

また、if〜endで囲まれた処理は複数行書くことができます。

複数行書く場合にも、ifの条件式がtrueだった場合に実行される処理群であることが分かりやすいようにインデントを揃えることが推奨されています。

if文、unless文にelseが追加された場合

if文にelseが追加された場合はif〜else〜endのように、if〜endの間にelseを挟んで記述します。

if 条件式
  # 条件式がtrueの場合に実行したい処理を記述
  ...
else
  # 条件式がfalseの場合に実行したい処理を記述
  ...
end

unless文の場合も同様ですが、if文で実行される処理が逆になります。

unless 条件式
  # 条件式がfalseの場合に実行したい処理を記述
  ...
else
  # 条件式がtrueの場合に実行したい処理を記述
  ...
end

else〜endで囲まれる処理も複数行記述することができます。

elseの前に記述した処理と同様で、else〜endで囲まれる処理もインデントを揃えましょう。

if〜elseの間のインデントとelse〜endの間のインデントを揃えなくてもRubyは処理を解釈することはできますが、読みやすさの観点でインデントを揃えることが一般的に推奨されます。

比較演算子の種類

比較演算子は体験した通り以下のような種類があります。

比較演算子 評価結果
== 左辺と右辺が等しい場合、trueを返却、そうでない場合、falseを返却
!= 左辺と右辺が等しくない場合、trueを返却、そうでない場合、falseを返却
> 右辺より左辺が大きい場合、trueを返却、そうでない場合、falseを返却
>= 左辺が右辺以上の場合、trueを返却、そうでない場合、falseを返却
< 左辺より右辺が大きい場合、trueを返却、そうでない場合、falseを返却
<= 右辺が左辺以上の場合、trueを返却、そうでない場合、falseを返却

数学では、=記号1つで左辺と右辺が等しいことを表現しますが、プログラミングでは=記号1つだと変数への代入を意味しているので、値が等しいことを評価するには===記号を2つ並べて記述します。

!記号は、Rubyプログラミングでは否定の表現としてしばしば用いられます。

評価結果も==の逆を動作をしていることから分かるでしょう。

><などは数学でいわゆる「大なり・小なり」を表現するので直感的に理解しやすいのではないでしょうか。

ただ、「以上」や「以下」を表す数学でいう不等号は「≧」「≦」と記述するのに対し、Rubyプログラミングではより単純な文字列として扱いやすく、大なり・小なりの記号とイコール記号を横に並べて>=<=と表現します。