Rubin nur so viel bewertet, da es wie dies in einem Ausdruck muss und stoppt dann, was Sie zurück sehen, ist nur der letzte Teil des Ausdrucks, den er bewertet hat. Also für Ihre & & Fall muss es immer bis zum Ende ausgeführt werden, falls eine spätere Klausel false zurückgibt und die AND falsch wäre.
Und tatsächlich Ihr Beispiel ist falsch:
irb> 0 && 1
=> 1
die seit 0 erwartet wird in Ruby, nicht so falsch wie in C.
Für die OR Fall truthy ist, kann es so schnell stoppen, wie es trifft alles, was truthig ist und muss sich nicht mit dem Rest beschäftigen.
0 || false # => 0
false || 0 # => 0
false || 0 || 2 # => 0
Wenn Sie einen Ausdruck wie diese zu einem boolean zwingen wollen, ist dies, wie Sie sehen es oft getan:
!!(expression)
!!(0 || 1) => true
!!(nil || false) => false
'0 && 1 'kehrt' 1 ', nicht' 0 ' – Stefan