目次
開発環境
- Ruby version: ruby 3.1.2
Rubyの論理演算子とは
Rubyの論理演算子とは、論理演算を指示するための演算子式です。
trueとfalseの2つの値を扱い、否定(not)、論理和(or)、論理積(and)の3つの論理演算子を使用し、複数の条件式が最終的に「true」なのか「false」なのかを返します。
公式リファレンス:https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html
Rubyの論理演算子の書き方
Rubyの論理演算子の書き方は下記になります。
1 | 条件式1 論理演算子 条件式2 |
論理演算子の一覧
Rubyで定義されている論理演算子の一覧は下記となります。
1 2 3 4 5 6 7 8 9 10 11 | # (否定) !a # a が false であればtrue、そうでなければfalse not a # a が false であればtrue、そうでなければfalse # (論理積) a && b # a かつ b が true であればtrue、そうでなければfalse a and b # a かつ b が true であればtrue、そうでなければfalse # (論理和) a || b # a または b が true であればtrue、そうでなければfalse a or b # a または b が true であればtrue、そうでなければfalse |
論理演算子は、プログラム言語によっても異なりますが、Rubyでは上記の3つが定義されています。
論理演算子の優先順位
Rubyの演算子には優先順位があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | (優先順位が高い) :: [] +(単項) ! ~ ** -(単項) * / % + - << >> & | ^ > >= < <= <=> == === != =~ !~ && || .. ... ?:(条件演算子) =(+=, -= ... ) not and or (優先順位が低い) |
1つの式の中で複数の演算が行われるとき、式の各部分は一定の順序に従って評価されます。
例えば、論理和の論理演算子は「&&」と「and」は同じ意味になりますが、「&&」のほうが優先順位が高く評価されます。
このように演算子には優先順位があるため、「and」「or」「not」などで記述した場合は優先順位が低いため、想定した通りの動作にならない場合もあるので注意しましょう。
Rubyの論理演算子の使い方
Rubyの論理演算子の使い方について、否定(!、not)、論理和(&&、and)、論理積(||、or)について解説していきます。
否定(!、not)の使い方
否定(!、not)の使い方について、サンプルコードです。
1 2 | puts !true # false puts !false # true |
否定の場合は条件式がtureの場合はfalse、条件式がfalseの場合はtrueを返します。
例えば、否定の論理演算子の使い方としては以下のようなパターンがあります。
1 2 3 4 5 6 | user = {id: 2, name: "taro", age: 25 ,sex: "男性"} current_user = {user_id: 1} if !(user[:id] == current_user[:user_id]) puts "ユーザーIDが一致しません。" end |
上記はログインしているユーザーと操作しようとしているデータのユーザーIDが一致しない場合の処理を記述しています。
論理和(&&、and)の使い方
論理和(&&、and)の使い方について、サンプルコードです。
1 2 3 | puts true && true # true puts true && false # false puts false && false # false |
論理和の場合は左辺と右辺の条件式がどちらもtrueの場合、最終的にtrueを返します。
例えば、論理和の論理演算子の使い方としては以下のようなパターンがあります。
1 2 3 4 5 6 7 8 9 10 | score = [74,76,88,82,93] total = score.sum average = total/score.length if total >= 400 && average > 70 puts "合計400点以上、かつ、平均70点以上であるため合格です。" else puts "合計400点以上、かつ、平均70点以上ではないため不合格です。" end |
上記は5教科の合計点と平均点が基準を満たしていた場合は合格となるように記述しています。
論理積(||、or)の使い方
論理積(||、or)の使い方について、サンプルコードです。
1 2 3 | puts true || true # true puts true || false # true puts false || false # false |
論理積の場合は左辺と右辺の条件式がどちらか一方がtrueの場合、最終的にtrueを返します。
例えば、論理積の論理演算子の使い方としては以下のようなパターンがあります。
1 2 3 4 5 6 7 8 9 10 | score = [74,76,88,82,93] total = score.sum average = total/score.length if total >= 400 || average > 70 puts "合計400点以上、または、平均70点以上であるため合格です。" else puts "合計400点以上、または、平均70点以上ではないため不合格です。" end |
上記は5教科の合計点、または平均点が基準を満たしていた場合は合格となるように記述しています。
おわりに
Rubyの論理演算子の使い方を解説してきました。
if文などの条件式と組み合わせて使用されることが多いですが、論理演算子で自由に条件分岐を使いこなせるようになれば、様々な処理を記述することができます。
演算子はプログラミングの基本でもあるため、目的の条件に合わせて自由に使い分けることができるようにしていきましょう。