LoginSignup
0
0

More than 1 year has passed since last update.

&& || & |の使い方

Posted at

よく使われる&&と||の違い

この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]

実際に問題を解いてみましょう

image.png

選択肢①

これは不正解です。これを正解にするには、
p a1 & a2
にしないといけないですね

選択肢②

これも不正解ですね。これを正解にするには、
p a1 || a2
にしないといけないですね

選択肢③

これも不正解ですね。これを正解にするには、
p a1 | a2
にしないといけないですね

選択肢④

これが正解です。ここまで読んで頂いた方なら理由はわかるかとおもいます

以上です。
何か間違いがございましたらご教授いただけますと幸いです

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0