Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
可能重复: 为什么 Ruby 中的 `a = a` `nil`?
我敢肯定这种行为是有原因的,我只是好奇它是什么。
y = x # NameError: undefined local variable or method 'x' x = x # => nil
这是由 Ruby 中变量的初始化方式引起的,这对于这种语言来说是相当独特的。基本上,Ruby 初始化(创建)一个变量,如果它可能被分配一个值。考虑这个例子:
if false x = "hello" end
x绝对不会在"hello"这里分配字符串。但是,它仍然会nil从静态程序分析中初始化,它可能已被分配。
x
"hello"
nil
你的例子是类似的。因为您将某些内容分配给x,所以它将在执行语句nil 之前被初始化。因此,在执行过程x中,实际上是nil.