unless を使うと、プログラムの処理を条件分岐させることができます。
以下から Rubyでの「unless・else・end」の使い方を解説していきます。
目次
unless の基本
「unless」を使うと、「○○の条件に一致しなかったら、××の処理を行う」といった制御ができます。以下のようにして、条件と処理を指定するのが基本です。
unless 条件
処理
end
また、条件に該当しなかった場合の処理を追加するには、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
であれば true
、1
でなければ 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 && score <= 100
!(score >= 80 && score <= 100)
条件式で使えるメソッド
結果が true
や false
で返ってくるものであれば、条件式でメソッドを使うことができます。
以下の例では a.empty?
で配列が空かどうかをチェックしています。
a = []
if a.empty?
p "配列は空です"
end
"配列は空です"
配列や empty?
の使い方について詳しくはこちら。
まとめ
以上、Ruby の「unless・else・end」の使い方でした!
ここまでの内容をまとめておきます。
- 「unless」を使うと、「○○の条件に一致しなかったら、××の処理を行う」といった制御ができる。
- 「else」を組み合わせると、条件に該当しなかった場合の処理を追加できる。
- 条件には、比較演算子や、結果が
true
やfalse
で返ってくるメソッドを使うことができる。