STUDY MEMO

学習のメモ書き

< Ruby > &、&&、I、||について

以前の投稿を手直し

&

集合の積演算。

両方の配列に含まれる要素を含んだ新しい配列を返し、重複する要素は削除される。

要素の重複判定:Objectクラスのインスタンスメソッドeql?により行われる。

https://i.gyazo.com/51ca3d2479f640c7812a04c85017285c.png

&&

左辺を評価し、結果が偽であった場合はnilかfalseを返す。左辺の評価結果が真であった場合には右辺を評価しその結果を返す。

要するに、

aがtrue:bへ進んでbの結果を返す

aがfalseまたはnil:aの結果を返す

例:a && b

# aがtrueの時
a, b = true, 2
a && b # => 2

# aがfalseの時
a && b # => false

使い方の例:新世界編のルフィとゾロの年齢(ネット調べ)

Luffy = 19
Zoro = 21

if Luffy >= 20 && Zoro >= 20 #ルフィは19なので次の処理へ
    puts "二人とも成人"
elsif Luffy < 20 && Zoro >= 20 #左辺がtrueのため右辺へ進み、右辺でもtrueが返る
    puts "ルフィは未成年"
else
    puts "二人とも未成年"
end

# 結果
# ルフィは未成年

|

集合の和演算。

両方の配列に含まれる要素を含んだ新しい配列を返し、重複する要素は削除される。

要素の重複判定は、Objectクラスのインスタンスメソッドであるeql?またはhashで行われる。

https://i.gyazo.com/00105a0a4f938e3d6074d7db9f14c93e.png

||

左辺を評価し、結果が真(true)であった場合にはその値を返す。 左辺の評価結果が偽(false)であった場合には右辺を評価しその評価結果を返す。

要するに、

aがtrue:aの結果を返す

aがfalseまたはnil:bへ進んでbの結果を返す

a || b

# aがtrueの時
a,b = true,2
a||b # => true

# aがfalseの時
a,b = false,2
a||b # => 2

&&と||

&&と||を表にすると下表のようになる。 これを図にすると、

https://i.gyazo.com/a9ae4be6bb440b7f8231e1c2a38497b0.png

https://i.gyazo.com/665aafcf0ef82c53c9bc67229502fb29.png

この図からみると、&&は以下のようになる。

https://i.gyazo.com/46b6afc24e7fbceffd8d43680580c312.png

また、||は以下のようになる。

https://i.gyazo.com/f1260e6a87e16da7ce5317385b674d17.png

参考文献

https://www.amazon.co.jp/ゼロからわかる-Ruby-超入門-かんたんIT基礎講座-五十嵐/dp/4297101238:title

https://docs.ruby-lang.org/ja/latest/method/Array/i/=26.html

https://docs.ruby-lang.org/ja/latest/method/Array/i/=7c.html

https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html#and

https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html#or