【Ruby】論理演算子の書き方と使い方の基本

作成日: 更新日:

開発環境

  • 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!a                # a が false であればtrue、そうでなければfalse
3not a             # a が false であればtrue、そうでなければfalse
4
5# (論理積)
6a && b            # a かつ b が true であればtrue、そうでなければfalse
7a and b           # a かつ b が true であればtrue、そうでなければfalse
8
9# (論理和)
10a || b            # a または b が true であればtrue、そうでなければfalse
11a 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=(+=, -= ... )
19not
20and or
21(優先順位が低い)

1つの式の中で複数の演算が行われるとき、式の各部分は一定の順序に従って評価されます。 例えば、論理和の論理演算子は「&&」と「and」は同じ意味になりますが、「&&」のほうが優先順位が高く評価されます。 このように演算子には優先順位があるため、「and」「or」「not」などで記述した場合は優先順位が低いため、想定した通りの動作にならない場合もあるので注意しましょう。

Rubyの論理演算子の使い方

Rubyの論理演算子の使い方について、否定(!、not)、論理和(&&、and)、論理積(||、or)について解説していきます。

否定(!、not)の使い方

否定(!、not)の使い方について、サンプルコードです。

1puts !true    # false
2puts !false   # true

否定の場合は条件式がtureの場合はfalse、条件式がfalseの場合はtrueを返します。 例えば、否定の論理演算子の使い方としては以下のようなパターンがあります。

1user = {id: 2, name: "taro", age: 25 ,sex: "男性"}
2current_user = {user_id: 1}
3
4if !(user[:id] == current_user[:user_id])
5    puts "ユーザーIDが一致しません。"
6end

上記はログインしているユーザーと操作しようとしているデータのユーザーIDが一致しない場合の処理を記述しています。

論理和(&&、and)の使い方

論理和(&&、and)の使い方について、サンプルコードです。

1puts true && true   # true
2puts true && false  # false
3puts false && false # false

論理和の場合は左辺と右辺の条件式がどちらもtrueの場合、最終的にtrueを返します。 例えば、論理和の論理演算子の使い方としては以下のようなパターンがあります。

1score = [74,76,88,82,93]
2
3total = score.sum
4average = total/score.length
5
6if total >= 400 && average > 70
7    puts "合計400点以上、かつ、平均70点以上であるため合格です。"
8else
9    puts "合計400点以上、かつ、平均70点以上ではないため不合格です。"
10end

上記は5教科の合計点と平均点が基準を満たしていた場合は合格となるように記述しています。

論理積(||、or)の使い方

論理積(||、or)の使い方について、サンプルコードです。

1puts true || true   # true
2puts true || false  # true
3puts false || false # false

論理積の場合は左辺と右辺の条件式がどちらか一方がtrueの場合、最終的にtrueを返します。 例えば、論理積の論理演算子の使い方としては以下のようなパターンがあります。

1score = [74,76,88,82,93]
2
3total = score.sum
4average = total/score.length
5
6if total >= 400 || average > 70
7    puts "合計400点以上、または、平均70点以上であるため合格です。"
8else
9    puts "合計400点以上、または、平均70点以上ではないため不合格です。"
10end

上記は5教科の合計点、または平均点が基準を満たしていた場合は合格となるように記述しています。

おわりに

Rubyの論理演算子の使い方を解説してきました。 if文などの条件式と組み合わせて使用されることが多いですが、論理演算子で自由に条件分岐を使いこなせるようになれば、様々な処理を記述することができます。 演算子はプログラミングの基本でもあるため、目的の条件に合わせて自由に使い分けることができるようにしていきましょう。

【Ruby】論理演算子の書き方と使い方の基本 | いっしー@Webエンジニア