类实例变量在实例方法

时间:2015-11-17 01:18:12

标签: ruby class-instance-variables

我将一个类实例变量指定为数组。

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

1 个答案:

答案 0 :(得分:0)

["brinjal", "banana"]位于@items RedClass个对象。

nil位于@items pRed个对象。

如果您将所有@更改为@@,它都会有效,因为它们始终是类级别的。或者您可以使用类级访问器:

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