Je souhaite gérer une collection d'objets créés d'un Klass. J'ai deux méthodes d'esprit im:Meilleure façon de gérer une collection d'objets créés
Première: Thru initialize
:
class Klass
@@objs = []
def initialize *args
# ... do regular initialization ...
Klass.send :add, self
end
class << self
def objs
@@objs
end
private
def add obj
@@objs << obj
end
end
end
Deuxième: Thru new
:
class Klass
@@objs = []
class << self
def objs
@@objs
end
alias_method :old_new, :new # never thought someday I'd name something as "old_new"!
private :old_new
def new *args
obj = super
@@objs << obj
obj
end
end
end
Test:
a = Klass.new
b = Klass.new
puts a.inspect #=> #<Klass:0xb7786ba0>
puts b.inspect #=> #<Klass:0xb7786b78>
puts Klass.objs.inspect #=> [#<Klass:0xb7786ba0>, #<Klass:0xb7786b78>]
Les deux ouvrages, et je tends de préférer la deuxième façon, à cause de "ajouter": il doit être privé, et je dois utiliser "Klass.send" . Quel est le meilleur moyen? Y a-t-il une autre (meilleure) manière?
Merci! J'étais aveugle! –