Переменная экземпляра класса идет как `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
, Что здесь происходит?
1 ответ
Решение
["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