我的印象是||
和or
是同義詞。或與||之間的區別當設置變量
設置變量or
不具有價值;爲什麼?
>> test = nil or true
=> true
>> test
=> nil
>> test = false or true
=> true
>> test
=> false
Works的預期'與||
>> test = nil || true
=> true
>> test
=> true
我的印象是||
和or
是同義詞。或與||之間的區別當設置變量
設置變量or
不具有價值;爲什麼?
>> test = nil or true
=> true
>> test
=> nil
>> test = false or true
=> true
>> test
=> false
Works的預期'與||
>> test = nil || true
=> true
>> test
=> true
or
具有較低的優先級比=
。
test = nil or true
相同
(test = nil) or true
是true
,同時設定test
到nil
。
||
具有比=
更高的優先級。
test = nil || true
相同
test = (nil || true)
是true
,同時設定test
到true
。
......這就是爲什麼我們不會寫這樣一段代碼,或者如果我們這樣做,我們總是會使用括號來清楚說明發生了什麼。 – mpen 2009-10-26 17:07:42
謝謝,這很有道理。 – 2009-10-26 17:09:03
不僅'''具有非常高和'或'非常低的優先級,而且'和'和'或'具有*相同*優先級,而'||'和'&&'具有不同的優先級。一般來說,在條件表達式中,總是使用運算符表單,因爲它們具有您實際期望它們具有的相對優先級。使用'and'和'or'僅用於控制流,其中您希望*內部表達式綁定更緊密。像'test = blah.get_records或puts'找不到記錄。''。 – 2009-10-29 13:34:53
and
和&&
之間相同。我曾經被這個問題所困擾,然後我意識到儘管and
比&&
更具可讀性,但這並不意味着它總是更合適。
>> f = true && false
=> false
>> f
=> false
>> f = true and false
=> false
>> f
=> true
>>
這對我來說是一個遺漏。 – 2009-10-27 02:16:31