Hériter méthode initialize() en ruby?
Je n'arrive toujours pas à comprendre comment faire une sous-classe constructeur de suivre ses parents...
exemple:
require 'mechanize'
class Scraper
attr_accessor :agent
def initialize
# I dont know if using instance variable is the right thing to do
@agent = Mechanize.new
end
end
class ScraperA < Scraper
end
Je veux faire ScraperA
suivre son parent constructeur de comportement,
c'est
instancier un Mécaniser l'objet sans me retaper Mechanize.new
dans
ScraperA méthode initialize (). Est-ce possible ?
Veulent juste de suivre SÈCHE principe, mais ruby, il est difficile pour moi ???
N'espère pas, c'est peut-être mon ignorance.
À la recherche de solution simple,Tnx.
Edit:
il s'avère que j'ai eu vides méthode initialize() dans ScraperA, remplacer la valeur par défaut
initialize().
Donc oui l'exemple est le travail, parce que pas le vide de la méthode initialize.
Désolé pour ma bêtise.
Tnx.
Je ne pense pas qu'une version de ruby où cela ne fonctionne pas.
Pourquoi en était-il fermé Trop "localisée"?
OriginalL'auteur mhd | 2010-07-12
Vous devez vous connecter pour publier un commentaire.
Euh... hein? Oui, c'est fait... Check this out:
Cela fonctionne parce que
initialize
est hérité, comme n'importe quelle autre méthode. Si vous remplacer par un nouveau sous-initialize
, il s'arrête de fonctionner. Ensuite, vous pouvez utiliser explicitementsuper
appeler le parent estinitialize
.OriginalL'auteur Amadan
Cela devrait fonctionner...
...si vous voulez avoir une autre logique pour la sous-classe. Comme les commentaires dire si le constructeur est exactement le même que pour le parent de la classe d'origine de votre code devrait fonctionner parfaitement.
OriginalL'auteur DanSingerman