Perché `a = a“ nil` in Ruby?

Ho guardato questo video . Perché a = a valutato a nil se a non è definito?

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

L’interprete Ruby inizializza una variabile locale con nil quando vede un assegnamento ad essa. Inizializza la variabile locale prima di eseguire l’espressione di assegnazione o anche quando l’assegnazione non è raggiungibile (come nell’esempio seguente). Ciò significa che il tuo codice inizializza a con nil e quindi l’espressione a = nil valuterà il valore della mano destra.

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

La prima espressione di assegnazione non viene eseguita, ma a viene inizializzata con nil .