2016-09-29 11 views
0

&&はすべて、Rubyの同じ行のifより前に実行されますか?例えばRubyで同じ行の `if`の前に` && `が常に実行される

は:

@building.approved = params[:approved] if xyz && abc && mno... 

&&の無制限の数は、括弧を使用せずにifの右側に使用することはできますか?

カッコを使用する傾向にありますが、デフォルト動作を理解したいと思います。

+2

[Ruby演算子優先順位テーブル](http://stackoverflow.com/questions/21060234/ruby-operator-precedence-table) – Makoto

+0

の重複の可能性ありこれは、指定された標本の正確な複製ではないと私は考えています。 'if'は演算子ではないので、演算子優先順位はOPを助けません。 –

答えて

2

if以降のすべては、構文のおかげで条件の一部でなければなりません。これを回避する唯一の方法は、実際に具体的にすることです:

(@building.approved = params[:approved] if xyz) && abc && ... 

これは明らかにあなたがここで意図しているものではありません。

ifは演算子ではない構文要素であるため、演算子のバインディング強度は問題になりません。したがって、絶対優先順位は最も低くなります。評価されます

唯一の条件は、論理的に偽の価値を生み出すものであり、または論理的に偽がチェーンを停止します返すために最初の一人として論理的に真だったものの後に来ます。

である:それは論理的に偽の値である場合

if a && b && c 

aで停止します。 bcは評価されません。しかし、チェインには本質的な制限はありません。

+1

短絡と '&&'演算子について何か追加するとどう思いますか?それは質問に関連しています。 –

+0

@wayneconradああ、質問の特有の言い回しのために、私はメモを付け加えました。 – tadman

+0

はい、それは私がそれが適切だと思う言葉です。私はすぐにこのコメントと他のコメントを削除します。 –

関連する問題