Ruby: Hinzufügen von Dingen zur Initialisierung der Methode durch Module

8

In Ruby möchte ich, dass eine Klasse eine Reihe von Modulen enthält und diese einzelnen Module einen Block oder eine Methode ausführen (oder einfach eine Möglichkeit finden, eine Instanzvariable zu bearbeiten), wenn diese Klasse initialisiert wird. Ich weiß, dass ich dies tun kann, indem ich eine Methode im Modul erstelle und sie dann in der Initialisierungsmethode der Klasse aufruft, aber ich möchte einen Weg finden, indem ich einfach das Modul einschließe und eine Methode aufrufe, um den Code zu initialisieren Auf diese Weise kann ich eine große Menge von Dingen in einer Klasse enthalten, ohne sich Gedanken darüber machen zu müssen, eine Codezeile in der Initialisierungsmethode für jedes einzelne Modul hinzuzufügen. Ich habe Aliasing, Super und verwandte Dinge überprüft, aber habe nichts bekommen ... Wenn es hilft zu verstehen, was ich zu erreichen hoffe, ist hier ein Pseudocode:

%Vor%

Das mag ein bisschen wortreich sein, aber ich denke, der Titel fasst zusammen, was ich versuche zu tun. Danke für jede Hilfe!

    
thIIIrd 06.11.2012, 19:23
quelle

1 Antwort

7

Es gibt einige Möglichkeiten, wie Sie das tun können. In diesem Beispiel wird die Initialisierungsmethode neu definiert und der gewünschte zusätzliche Code hinzugefügt:

%Vor%

Allerdings : Ich denke, was Sie wirklich wollen, ist Unterklassenbildung. Wenn Sie viele Klassen mit ähnlichem Verhalten haben, wie Sie es anscheinend tun, fragen Sie sich, ob es eine natürliche abstrakte Elternklasse gibt. Kannst du erklären, was du mit super gemacht hast und warum es nicht funktioniert hat?

    
Zach Kemp 06.11.2012 19:39
quelle

Tags und Links