2009-11-10 2 views
0

Est-ce la manière la plus efficace de transférer l'appel 'each' vers la méthode natif de Hash?Proxication de chaque méthode dans Ruby

Dois-je rendre @index visible à l'extérieur?

Je suis un peu incertain car un bloc est invovled.

class TimeSlice 
    def initialize(list) 
    # @index is a hash 
    @index = list.do_some_magic() 
    end 

    def each(&block) 
    @index.each(&block) 
    end 
end 
+0

Merci les gars! – reto

Répondre

2

@index doit être privé. Pas besoin de l'exposer en dehors de la portée de la classe. Votre exemple est parfaitement bien si vous avez seulement besoin de déléguer la méthode each.

Pour les cas plus complexes, vous pouvez envisager d'implémenter un motif de conception Delegate. Ruby est livré avec un Delegate module.

1

En matière d'efficacité, je ne pense pas qu'il y ait quelque chose qui ne va pas. Toutefois, vous devez garder @index privé, sinon le point entier de la méthode wrapper each est perdu.