2012-03-08 4 views

答えて

8

いいえ、2つの演算子は同じ効果を持ちますが、優先順位が異なります。

演算子||は非常に高い優先度を持つため、以前の値に非常に厳密にバインドされます。 or演算子の優先順位は非常に低いため、他の演算子よりも強く束縛されません。

2つのバージョンを持つ理由は、優先順位が高く、優先順位が低いという理由が便利なためです。

+0

だから、最初のステートメントは( "[" || line.strip.empty?)= "["と評価され、次に(line.start_with? "[")と評価されます。 – surajz

+1

まさにそうです。優先順位は、括弧のように、省略時の意味を推測する方法です。ちょうど数学の優先順位のように働く。 –

1

ダニエルは右に、より明確である:

if (line.start_with?("[") || line.strip.empty?) 
    puts "yes" 
end 

は、あなたが使用された最初のケ​​ースでyes

3

が生成されます||

(line.start_with? ("[" || line.strip.empty?)) 

ウィッヒは

(line.start_with? ("[")) 
に変換:ウィッヒは、いくつかの括弧を追加して、あなたの最初の文は似ている明確にすること、により他answeresで述べ優先に文の中で何よりも前に評価され、

一方ではFALSE

をその結果、2番目の文は

((line.start_with? "[") or line.strip.empty?) 
に変換します

ウィッヒは私が関数を呼び出すカッコ毎回を使用しようとする理由真

That's結果

(FALSE or TRUE) 

に変換されます。 :-)

関連する問題