dans Ruby, lorsqu'un procédé est aliasé, l'alias pointe vers le corps de la méthode d'origine. Donc, même si vous redéfinissez la méthode d'origine, l'alias continuera à utiliser la définition initiale.
class Foo def bar "bar" end alias :saloon :bar end class Foo def bar "BAR" end end puts Foo.new.saloon
4 Réponses :
Il suffit de rétablir l'alias:
class Foo def bar "bar" end def saloon bar end end This is not an alias at all, but it works as you want.
oui et non. Les solutions Coreyward ou Sony Santos fonctionnent bien. Ce que vous devez savoir, c'est pourquoi votre codé n'a pas fonctionné comme si vous avez bien fonctionné.
L'ancienne bar existe toujours, il est juste un peu plus difficile à accéder maintenant. P> P> alias code> fait un nouveau nom pour la fonction tel qu'il apparaît lorsque la méthode est invoquée. C'est pas em> un pointeur, mais une nouvelle façon de faire référence à quelque chose. Cela nous permet de faire quelque chose comme ceci: p>
Voici une autre réponse, mais vous devez effectuer des étapes supplémentaires: collectez les alias avant de remplacer, et des réalités après: BTW, si quelqu'un peut éteindre l'une de ces étapes, Puis-je le savoir! :) p> p>
C'est un moyen intelligent de déterminer quelles méthodes sont aliasées. Je pense que ça ferait le tour ...