2010-07-14 6 views
1

Étant donné le code Ruby suivant, et étant donné que j'ai une instance de Klass, comment puis-je appeler la méthode do_stuff sur mon instance Klass. Je veux convertir mon instance de Klass en Subklass. Je comprends que le typage n'est pas possible dans Ruby - y a-t-il un moyen de faire semblant?Faux un type-cast en Ruby?

class Klass 
    ... 
end 

class Subklass < Klass 
    ... 
    def do_stuff 
    ... 
    end 
end 

inst = Klass.new 
inst.magically_convert_to_subklass_instance # Need help here 
inst.do_stuff 

Répondre

2

L'héritage ne fonctionne pas de cette façon. Si vous avez une instance de Klass, vous ne pouvez pas la transformer en Subklass. Pour partager du code comme celui-ci, vous pouvez utiliser un module pour définir la méthode do_stuff afin d'ajouter les fonctions du module dans Klass. i.e .:

module StuffModule 
    def do_stuff 
    print "do stuff" 
    end 
end 

class Klass 
include StuffModule 
end 

inst = Klass.new 
inst.do_stuff 
+0

Ruisseau, bien sûr - vous ne pouvez pas lancer "vers le haut" de toute façon. Merci pour l'alternative. – Joel