【发布时间】:2013-02-01 06:58:53
【问题描述】:
class Sample
attr_accessor :x,:y
def initialize
@x = "x"
y = "y"
end
end
Sample.new.instance_variables => [:@x]
class Sample
attr_accessor :x,:y
def initialize
@x = "x"
self.y = "y"
end
end
Sample.new.instance_variables => [:@x, :@y]
谁能告诉我这里发生了什么。为什么 y 第二次是 instance_variable?
【问题讨论】:
-
在第一个示例中,如果您分配:
@y=1,那么您也将获得@y作为 ivar。我猜 Ruby 正在attr_accessor中进行优化,并且在您专门分配给它之前不会创建 ivar。 -
和 @Zabba :在您为其赋值之前,变量不存在。请看stackoverflow.com/questions/13850971/…
标签: ruby