可能重复:
为什么Ruby中的'a = a``nil`?
我确信这种行为有一个原因,我只是好奇它是什么.
y = x # NameError: undefined local variable or method 'x'
x = x # => nil
Run Code Online (Sandbox Code Playgroud)
这是由Ruby中初始化变量的方式引起的,这对于这种语言来说是独一无二的.基本上,Ruby初始化(创建)一个变量,如果它可能被赋值一个.考虑这个例子:
if false
x = "hello"
end
Run Code Online (Sandbox Code Playgroud)
x肯定不会在"hello"这里分配字符串.但是,它仍然会nil从静态程序分析中初始化,它可以被分配.
你的例子很相似.因为您指定了某些内容x,所以nil 在执行该语句之前它将被初始化.因此,在执行期间,x事实上nil.