55 votes

Existe-t-il une syntaxe plus simple (une ligne) pour l’alias One Class Class?

Je sais que je peux faire ce qui suit, et ce n’est que 3 lignes:

 class << self
  alias :generate :new
end
 

Mais par curiosité, existe-t-il un moyen plus simple (sans point-virgule) comme:

 class_alias :generate, :new
 

72voto

platzhirsch Points 10662

Depuis Ruby 1.9, vous pouvez utiliser la méthode singleton_class pour accéder à l'objet singleton d'une classe. De cette façon, vous pouvez également accéder à la méthode alias_method . La méthode elle-même est privée, vous devez donc l'invoquer avec send . Voici votre seul paquebot:

 self.singleton_class.send(:alias_method, :generate, :new)
 

Gardez toutefois à l'esprit que alias ne fonctionnera pas ici.

3voto

Matt Sanders Points 1558

Je ne crois pas qu'il existe une classe spécifique à la version de l' alias. J'ai l'habitude de l'utiliser comme vous l'avez déjà démontré.

Cependant, vous pouvez vouloir étudier la différence entre alias et alias_method. C'est l'une de ces zones difficiles de ruby qui peuvent être un peu contre-intuitif. En particulier, le comportement de l' alias à l'égard des descendants n'est probablement pas ce que vous attendez.

Espérons que cette aide!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X