Class 实例变量在实例方法中作为 `nil` 出现
Class instance variable is coming as `nil` in instance method
我分配了一个 class 实例变量作为数组。
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
如果我访问 class 的实例,它 returns nil
。这里发生了什么?
["brinjal", "banana"]
在 Red
的 @items
中,一个 Class
对象。
nil
在 p
的 @items
中,一个 Red
对象。
如果您将所有 @
更改为 @@
,它将起作用,因为它们始终是 class 级别。或者您可以使用 class 级别的访问器:
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
我分配了一个 class 实例变量作为数组。
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
如果我访问 class 的实例,它 returns nil
。这里发生了什么?
["brinjal", "banana"]
在 Red
的 @items
中,一个 Class
对象。
nil
在 p
的 @items
中,一个 Red
对象。
如果您将所有 @
更改为 @@
,它将起作用,因为它们始终是 class 级别。或者您可以使用 class 级别的访问器:
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