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

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

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

 

unless の基本

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

unless 条件
  処理
end
メモ

よく似た文で「○○の条件に一致したら、××の処理を行う」といった制御ができる「if」もあります。

if について詳しくはこちら

 

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

unless 条件
  条件に当てはまった場合の処理
else
  条件に該当しなかった場合の処理
end

 

unless を使ったプログラム例

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

 

条件を指定する(unless … end)

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

プログラム
a = 2

unless a == 1
  p "a は 1 ではない"
end
実行結果
"a は 1 ではない"

 

1行目で、「a」の変数に 1 をセットして確認してみると、unless で指定した条件に一致するため、処理は行われず、何も表示されません。

プログラム
a = 1

unless a == 1
  p "a は 1 ではない"
end
メモ
unless a == 1
  p "a は 1 ではない"
end

は、

p "a は 1 ではない" unless a == 1

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

メモ

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

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

 

条件に該当しなかった場合の処理を指定する(unless … else … end)

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

 

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

プログラム
a = 1

unless a == 1
  p "a は 1 ではない"
else
  p "a は 1 である"
end
実行結果
"a は 1 である"

 

条件の指定方法

上の例では条件式として 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 の「unless・else・end」の使い方でした!

 

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

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