我将一个类实例变量分配为一个数组。
class Red
@items = ["brinjal", "banana"]
puts @items.inspect
def test
puts @items.inspect
end
end
p = Red.new # => prints ["brinjal", "banana"]
p.test # => prints nil
如果我访问该类的一个实例,它会返回nil
. 这里发生了什么?
我将一个类实例变量分配为一个数组。
class Red
@items = ["brinjal", "banana"]
puts @items.inspect
def test
puts @items.inspect
end
end
p = Red.new # => prints ["brinjal", "banana"]
p.test # => prints nil
如果我访问该类的一个实例,它会返回nil
. 这里发生了什么?
["brinjal", "banana"]
在@items
中Red
,一个Class
对象。
nil
在@items
中p
,一个Red
对象。
如果您将所有内容更改@
为@@
,它将起作用,因为它们始终是类级别的。或者您可以使用类级访问器:
class Red
class << self
attr_accessor :items
end
@items=[]
@items<<"brinjal"
@items<<"banana"
puts items.inspect
def test
puts self.class.items.inspect
end
end