Ich hatte eine interessante Frage und habe sie in einem Testformat geteilt
def ampersand_return
puts "foo" && return
puts "bar"
end
def and_return
puts "foo" and return
puts "bar"
end
> ampersand_return
=> nil
> and_return
foo
bar
=> nil
Können Sie erklären, was passiert?
In der Regel liegt der Unterschied zwischen "&&" und "und" in seiner Priorität.
&&
wird zuerst berechnet und hat den gleichen Wert wie unten
puts ("foo" && return)
Da "foo" wahr ist, wird "return" auf der rechten Seite verarbeitet und die Methode kehrt zurück, ohne etwas auszugeben.
setzt" foo "
wird zuerst berechnet und hat den gleichen Wert wie unten
(puts "foo") and return
Da "Puts" "Null" zurückgibt, wird die rechte Seite von "und" nicht verarbeitet, und es werden sowohl "foo" als auch "bar" ausgegeben, und die Methode endet normal.
Ist die Dokumentation nicht zu Operatoren angegeben, bei denen der Methodenaufruf Vorrang hat, wie im Beispiel und
? Yo
Gemäß Diese Stapelüberlaufantwort "und", "oder", "wenn", "es sei denn", "bis", "während", "Rettung" Scheint sich so zu verhalten
Recommended Posts