J'avais une question intéressante alors je l'ai partagée dans un format de test
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
Pouvez-vous expliquer ce qui se passe?
En règle générale, la différence entre &&
et ʻand` réside dans sa priorité.
&& return
&&
est calculé en premier et a la même valeur que ci-dessous
puts ("foo" && return)
Puisque «foo» est vrai, «return» sur le côté droit est traité et la méthode retourne sans rien afficher.
met" foo "
est calculé en premier et a la même valeur que ci-dessous
(puts "foo") and return
Puisque «put» renvoie «nil», le côté droit de «et» n'est pas traité, les deux «foo» «et« bar »» sont affichés et la méthode se termine normalement.
La documentation n'est-elle pas spécifiée sur les opérateurs où l'appel de méthode est prioritaire, comme dans l'exemple ʻand? Yo Selon [This Stack Overflow Answer](https://stackoverflow.com/a/42077277/3891638), ʻand
, ʻor, ʻif
, ʻunless, ʻuntil
, while
, rescue
Semble se comporter de cette façon
Recommended Posts