【发布时间】:2012-10-19 01:18:12
【问题描述】:
我确定这种行为是有原因的,我只是好奇它是什么。
y = x # NameError: undefined local variable or method 'x'
x = x # => nil
【问题讨论】:
-
谢谢你,抱歉我找不到它的副本。
标签: ruby
我确定这种行为是有原因的,我只是好奇它是什么。
y = x # NameError: undefined local variable or method 'x'
x = x # => nil
【问题讨论】:
标签: ruby
这是由 Ruby 中变量的初始化方式引起的,这对于该语言来说是相当独特的。基本上,Ruby 初始化(创建)一个变量,如果它可能被分配一个值。考虑这个例子:
if false
x = "hello"
end
x 绝对不会在这里分配"hello" 字符串。但是,它仍然会使用 nil 进行初始化,因为从静态程序分析来看,它可能已被分配。
你的例子是类似的。因为您为x 分配了一些东西,所以它会在执行语句之前用nil 进行初始化。因此,在执行过程中,x 实际上是nil。
【讨论】: