43 votes

Pourquoi `a = a`` nil` est-il en Ruby?

J'ai regardé cette vidéo . Pourquoi a = a évalué à nil si a n'est pas défini?

 a = a # => nil
b = c = q = c # => nil
 

65voto

Alex Kliuchnikau Points 8411

Interpréteur Ruby initialise une variable locale avec nil lorsqu'il voit une mission pour elle. Il initialise la variable locale avant d'exécuter l'expression d'affectation ou même lorsque la cession n'est pas accessible (comme dans l'exemple ci-dessous). Cela signifie que votre code initialise a avec nil , puis l'expression a = nil évaluera à la droite de la valeur.

a = 1 if false
a.nil? # => true

La première expression d'affectation n'est pas exécuté, mais a est initialisé avec nil.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X