【发布时间】:2014-08-13 16:40:47
【问题描述】:
前几天我注意到 Ruby 中的实例变量有一些奇怪的行为。我试图添加一个实例变量数组,其中包含该类的其他实例变量“属性”。该类在没有任何参数的情况下被初始化,但我仍然想在初始化时创建这个数组。这是一个(精简的)类的示例:
class Foo
attr_accessor :bar, :baz
attr_reader :attrs
def initialize
@attrs = [@bar, @baz]
end
end
这就是奇怪的地方:
f = Foo.new #=><Foo.0x[object_id] @attrs=[nil, nil]>
f.bar = "bar" #=>"bar"
f.baz = "baz" #=>"baz"
f.attrs #=>[nil, nil]
在初始化时,我可以看到Foo.attrs 是[nil, nil]。但是更新Foo.bar和Foo.baz之后,为什么Foo.attrs还是返回[nil, nil]?为什么他们的新价值观没有体现出来?
我认为这不是最好的方法,并找到了解决方法,但我仍然对这种行为感到好奇。
【问题讨论】:
标签: ruby class instance-variables