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 对象。

nilp@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