-1

我将一个类实例变量分配为一个数组。

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. 这里发生了什么?

4

1 回答 1

0

["brinjal", "banana"]@itemsRed,一个Class对象。

nil@itemsp,一个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
于 2015-11-17T01:21:59.777 回答