Ruby初心者です。
and or && ||のこれらの違いはなんなのでしょうか?
違いを教えていただけないでしょうか?
宜しくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
and, or, &&, || の差については 他の回答に詳しいです。
この回答では コーディング規約の点からの情報を示します。
rubocop https://github.com/bbatsov/rubocop では 標準設定では and or の使用は警告が出ます。
$ cat sample.rb a = true b = false puts '1' if a and b puts '2' if a && b $ rubocop sample.rb Inspecting 1 file C Offenses: sample.rb:3:15: C: Use && instead of and. puts '1' if a and b ^^^ 1 file inspected, 1 offense detected
and の代わりに && を使え と警告がでています。
投稿2014/11/24 08:33
総合スコア22324
0
優先度以外は同じです。
and or は、代入やメソッド呼び出しの引数の結合より、優先度が低いので、ringさんの例は、
p 5 and 10
は、(p(5)) and 10
と書くとよりわかりやすいかと思います。
また、p (5 and 10)
は、pの直後の空白が肝で、空白の無いp(5 and 10)
はエラーです。
前者の括弧は演算の優先度を示すための括弧、後者の括弧はメソッド呼び出しの引数をくくる括弧です。
後者の場合、引数を区切るカンマよりandの優先度が低いので、引数に出来ないため。
p((5 and 10))
はOK。外側の括弧がメソッド呼び出しの引数をくくる括弧、内側の括弧が演算の優先度を示す括弧です。
このあたり、and or not を使うと考慮点が多い、また、思わぬバグを生む可能性があると言うことで、コーディングルールで、and or not を禁止して && || ! だけを使うようにしている所もあるようです。
それはそれでありだと思います。
私は、and or not は構文の一部だというように、if/unless 等の条件部分の直下だけで使っています。(むしろ、条件部分の直下では && || ! は使わない)
代入や、メソッド呼び出しの引数では and or not は使わない。
あと、&& は || より優先度が高いが、and と or は同じ優先度というのも、and or を使うなら忘れてはいけません。
投稿2014/11/24 06:43
総合スコア85901
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
大きく2つあります。
&& ||の方がand orよりも優先度が高いということ(代入演算子よりも演算子の優先度が低いこと)。
もうひとつ、両者の違いは、自己代入ができないこと、
などがあります。
例えば、サンプルです。
p 5 && 10 # p (5 && 10)と同じで、10が出力されます。
p 5 and 10 # p (5) and 10と同じで、5が出力されます。
前者は論理積の結果がpに渡されていますが、
後者ではpの実行結果と10の論理積が渡されているということです。
後者を&&と同じ結果にしようとするのであれば、
p (5 and 10)というようにすればできます。
投稿2014/11/23 08:48
総合スコア170
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。