variable - ruby yield




在Ruby中“和”和&&之間的區別? (4)

Ruby風格指南比我能說的更好:

使用&& / || 用於布爾表達式,和/或用於控制流。 (經驗法則:如果您必須使用外部圓括號,則使用錯誤的操作符。)

# boolean expression
if some_condition && some_other_condition
  do_something
end

# control flow
document.saved? or document.save!

Ruby中的&& and運算符有什麼區別?


and &&相同,但優先級較低 。 他們都使用短路評估

警告:甚至具有比=更低的優先級,所以你要避免and始終


||&&以您在編程語言中布爾運算符期望的優先級進行綁定( &&非常強大, ||稍弱)。

andor俱有較低的優先級。

例如,不像||or俱有比=更低的優先級:

> a = false || true
 => true 
> a
 => true 
> a = false or true
 => true 
> a
 => false

同樣,與&&不同,它的優先級低於=

> a = true && false
 => false 
> a
 => false 
> a = true and false
 => false 
> a
 => true 

更重要的是,不像&&||andor以相同的優先級綁定:

> !puts(1) || !puts(2) && !puts(3)
1
 => true
> !puts(1) or !puts(2) and !puts(3)
1
3
 => true 
> !puts(1) or (!puts(2) and !puts(3))
1
 => true

弱綁定andor可能有助於控制流的目的:請參閱devblog.avdi.org/2010/08/02/using-and-and-or-in-ruby


具有較低的優先級,我們大多使用它作為控制流修改器,如if

next if widget = widgets.pop

widget = widgets.pop and next

raise "Not ready!" unless ready_to_rock?

ready_to_rock? or raise "Not ready!"

我更喜歡用if但不是,因為如果它更易理解,所以我只是忽略

參考

在Ruby中使用“和”和“或”





operators