与此问题一样,当在其自己的赋值中使用未定义的局部变量时,将对其进行求值nil.
x = x # => nil
Run Code Online (Sandbox Code Playgroud)
但是当局部变量的名称与现有方法名称冲突时,它更棘手.为什么下面的最后一个例子会返回nil?
{}.instance_eval{a = keys} # => []
{}.instance_eval{keys = self.keys} # => []
{}.instance_eval{keys = keys} # => nil
Run Code Online (Sandbox Code Playgroud)