Когда я создаю объект класса, я хочу, чтобы мой метод помещал мои объекты класса в массив.И также это должно быть достижимо вне класса.Я пытался, как это:
class Object1
@@obj_all = []
attr_accessor :id, :name
def initialize id, name
@id = id
@name = name
@@obj_all << self
end
def self.obj_all
@@obj_all
end
end
a1 = Object1.new(0,"A")
a2 = Object1.new(1,"A")
a3 = Object1.new(2,"A")
a4 = Object1.new(3,"A")
p Object1.obj_all
Результат в порядке, но когда я хочу использовать p obj_all
вместо p Object1.obj_all
, возникает ошибка.
Как видите,Я могу решить эту проблему следующим образом:
all_obj = []
all_obj[0] = Object1.new(0,"A")
all_obj[1] = Object1.new(1,"A")
all_obj[2] = Object1.new(2,"A")
all_obj[3] = Object1.new(3,"A")
, поэтому у меня есть массив 'all_obj', и это можно редактировать, как я хочу.но я хочу исправить эту проблему внутри нашего класса Object1.
Как я могу делать, как хочу?