[RAILS] [Ruby-Verständnisprüfung] Können Sie erklären, was passiert? && und und

Ich hatte eine interessante Frage und habe sie in einem Testformat geteilt

Phänomen

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?

Antworten

In der Regel liegt der Unterschied zwischen "&&" und "und" in seiner Priorität.

Für "&& zurück"

&& 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.

Für "und zurück"

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.

Am Ende

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

[Ruby-Verständnisprüfung] Können Sie erklären, was passiert? && und und
Überprüfen Sie, ob has_many vorhanden ist und zu optional gehört: Was ist wahr?
Was ist ein Ruby-Modul?
[Ruby] Was ist eine Instanz?
Was sind Microservices und Microservices Frameworks?
Was ist ein zweidimensionales Ruby-Array?
[Technischer Hinweis] Was ist "include" in Ruby?
Was ist Java und Entwicklungsumgebung (MAC)
Was ist die Überprüfung der RSA-Signatur und warum?
[Ruby] Die Berechnungsergebnisse zwischen den Dezimalstellen sind unterschiedlich, unterschiedlich oder nicht so, wie Sie es beabsichtigt haben.