##よく使われる&&と||の違い
この2つの違いは右辺が実行されるかどうかが重要なんです。
まず、&&演算子は左辺がtrueのとき、右辺が実行されるんです。
対して、||演算子は左辺がtrueのとき、右辺は実行されないんです。
そして、最後に実行されたコードの値を返すんです
論より証拠ということで、実例を見ていきましょう
##具体例
###&&
If user_signed_in? && user.name == hoge
puts “fuga”
end
このコードでは&&が使われています。先ほども述べたように、&&は左辺がtrueなら右辺を実行します。
このコードでいえば、ユーザーがログイン中であるなら、左辺のuserインスタンスのnameがhogeであるかを調べるんです
そしてuser.name == hogeがfalseなら、falseが返ってきて、trueならfugaが返ってくるんです
user_signed_in?がfalseなら右辺のコードは実行されません
###||
If user_signed_in? || user.name == hoge
puts “fuga”
end
||演算子は左辺がtrueのとき、右辺は実行されないんです。
もし、ユーザーがログイン中なら、つまり右辺がtrueなら左辺を実行せずに、fugaを返します。
もし左辺が、false なら右辺がtrueかを調べます。
trueならfugaを返します
まとめると、**&&は右辺左辺ともにtrueであれば、期待してる処理がなされる。||は、右辺か左辺のどちらかがtrueだったら、期待してる処理がなされる、**ということです
##&と|
先ほどまでは&&||でしたが、&と|もあるんです笑
ややこしいですよね笑
###&とは
ここでは、arrayクラスでの&を説明します
&は二つの配列において共通した要素を取り出します。以下のコードを見てください
[1,2,4,5] & [2,5,7]
=> [2, 5]
このように共通した要素を返してくれるのが、&です
###|とは
これは、2つの配列において、お互いの持ってる要素を返してくれます
以下のコードを見てください
[1,2,4,5] || [2,5,7]
=>[1, 2, 4, 5, 2, 5, 7]
##実際に問題を解いてみましょう
###選択肢①
これは不正解です。これを正解にするには、
p a1 & a2
にしないといけないですね
###選択肢②
これも不正解ですね。これを正解にするには、
p a1 || a2
にしないといけないですね
###選択肢③
これも不正解ですね。これを正解にするには、
p a1 | a2
にしないといけないですね
###選択肢④
これが正解です。ここまで読んで頂いた方なら理由はわかるかとおもいます
以上です。
何か間違いがございましたらご教授いただけますと幸いです