4-3-1 elsif、caseを使って複数の条件が記述できることを学ぼう

elsif

if文では、if 条件式 処理群A else 処理群B endと記述することで、条件式がtrueなら処理群Aを実行し、条件式がfalseなら処理群Bを実行することができることを既に学びました。

このif文は条件式が1つだけですが、条件式が2つ以上になる場合はどのように記述するでしょうか?

条件式Aがtrueなら処理群Aを実行、条件式Bがtrueなら処理群Bを実行、条件式AもBもfalseなら処理群Cを実行する場合に対応するために用意されている構文がelsifです。

この場合、処理群Aとelseの間にelsifを記述し、インデントを処理群Aと同様にした箇所に処理群Bを記述し、elseの後に処理群Cを記述します。

まとめると、if 条件式A 処理群A elsif 条件式B 処理群B else 処理群C endと記述することで複数の条件を列挙し実行したい処理を分けることができます。

if 条件式A
  # 処理群A
elsif 条件式B
  # 処理群B
else
  # 処理群C
end

case文

複数の条件を記述するには、先ほど学んだelsifを使って記述できますが、別の仕組みとしてcase文という構文も用意されています。

case文はcaseの他に、whenelseendを用いて記述します。

英語でcaseというと「場合」と訳されますので条件を表現しているな、と想像しやすいでしょう。

ifelsifを使った構文と同じ動きをするように定義可能ですが、case文が特徴的なのは条件式を記述せずにcaseの直後に何らかのオブジェクトを指定し、そのオブジェクトの期待する値をwhenの直後に記述する点です。