【Ruby入門】if文の使い方(if・elsif・else・end を使った条件分岐まとめ)

if文を使うと、プログラムの処理を条件分岐させることができます。

以下から Rubyでの「if・elsif・else・end」の使い方を解説していきます。

 

if文の基本

「if」を使うと、「○○の条件に一致したら、××の処理を行う」といった制御ができます。以下のようにして、条件と処理を指定するのが基本です。

if 条件
  処理
end

 

複数の条件を指定する場合は以下のように elsif も使います。

if 条件1
  条件1に当てはまった場合の処理
elsif 条件2
  条件2に当てはまった場合の処理
end
メモ

条件1と条件2の両方に一致した場合は、最初に記述した条件が優先され、処理1が実行されます。

 

また、どの条件にも一致しなかった場合の処理を追加するには、else も使います。

if 条件1
  条件1に当てはまった場合の処理
elsif 条件2
  条件2に当てはまった場合の処理
else
  どの条件にも一致しなかった場合の処理
end

 

if を使ったプログラム例

実際にプログラムを書いて動作を確認してみましょう。

 

単体の条件を指定する(if … end)

以下は「a」の変数の値が 1 であれば、「a は 1 である」と表示する例。

プログラム
a = 1

if a == 1
  p "a は 1 である"
end
実行結果
"a は 1 である"

 

1行目で、「a」の変数に 2 をセットして確認してみると、if で指定した条件に一致しないため、何も表示されません。

プログラム
a = 2

if a == 1
  p "a は 1 である"
end
メモ
if a == 1
  p "a は 1 である"
end

は、

p "a は 1 である" if a == 1

のように1行で表すこともできます。

メモ

a == 1 は「a」の変数に入っている値が 1 であれば true1 でなければ false を返す記述です。

条件式についてはこのページの下のほうで詳しく書きました。

 

複数の条件を指定する(if … elsif … end)

複数の条件を指定する場合は elsif も使います。

以下は「a」の変数の値が 1 であれば「a は 1 である」、変数の値が 2 であれば「a は 2 である」と表示する例。

プログラム
a = 1

if a == 1
  p "a は 1 である"
elsif a == 2
  p "a は 2 である"
end
実行結果
"a は 1 である"

 

1行目で「a」の変数に入れる値を 2 にしておくと、以下のように実行結果が変わることが確認できます。

プログラム
a = 2

if a == 1
  p "a は 1 である"
elsif a == 2
  p "a は 2 である"
end
実行結果
"a は 2 である"

 

どの条件にも一致しなかった場合の処理を指定する(if … elsif … else … end)

どの条件にも一致しなかった場合の処理を指定するには else も使います。

 

以下では a == 1 にも a == 2 にも当てはまらないため、else のブロックの中で指定した処理が実行されていることが確認できます。

プログラム
a = 3

if a == 1
  p "a は 1 である"
elsif a == 2
  p "a は 2 である"
else
  p "条件に一致しない"
end
実行結果
"条件に一致しない"

 

条件の指定方法

上の例では条件式として a == 1 などを用いましたが、他にもさまざまなバリエーションがあります。

 

条件式で使える比較演算子

条件式で使える比較演算子には以下のようなものがあります。

a == b a と b が等しい
a != b a と b が等しくない
a > b a より b が小さい
a < b a より b が大きい
a >= b a より b が小さい、または等しい
a <= b a より b が大きい、または等しい
a && b a も b も正である
a || b a または b が正である
!a a の否定

 

上の記述を組み合わせて、

  • a == b && c == d
  • (a > b || c < d) && e == d

といった記述もできます。

 

以下は条件式の具体例。

score が80以上・100以下
score >= 80 && score <= 100
score が80以上・100以下でない
!(score >= 80 && score <= 100)

 

条件式で使えるメソッド

結果が truefalse で返ってくるものであれば、条件式でメソッドを使うことができます。

以下の例では a.empty? で配列が空かどうかをチェックしています。

プログラム
a = []

if a.empty?
  p "配列は空です"
end
実行結果
"配列は空です"
メモ

配列や empty? の使い方について詳しくはこちら

 

まとめ

以上、Ruby の「if・elsif・else・end」の使い方でした!

 

ここまでの内容をまとめておきます。

  • 「if」を使うと、「○○の条件に一致したら、××の処理を行う」といった制御ができる。
  • 「elsif」を組み合わせると、複数の条件を指定できる。
  • 「else」を組み合わせると、どの条件にも一致しなかった場合の処理を追加できる。
  • 条件には、比較演算子や、結果が truefalse で返ってくるメソッドを使うことができる。