为什么在Ruby中a = a“ nil`?

我看了这个video 。 为什么a = a评估nil如果a没有被定义?

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

Ruby解释器在看到一个赋值的时候用nil初始化一个局部variables。 它在执行赋值expression式之前初始化本地variables,甚至在赋值不可达的时候(如下面的例子)。 这意味着你的代码初始化a nil ,然后expression式a = nil将计算到右边的值。

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

第一个赋值expression式不被执行,但是a被初始化为nil