class A
do_something_from_b
def method_in_a
end
end
module B
def self.included base
base.extend ClassMethods
end
module ClassMethods
def do_something_from_b
A.class_eval do
alias_method :aliased_method_in_a, :method_in_a
end
end
end
end
A.send(:include, B)
Dieser Code wird fehlschlagen, weil, wenn do_somethind_from_b
aufgerufen wird, method_in_a
noch nicht existiert.Lauf Code nach dem Unterricht ist voll geladen
So ist es eine Möglichkeit, in class A
einzuhaken nachdem sie vollständig geladen ist, ohne den do_something_from_b
Anruf am Ende class A
setzen?
Bearbeiten: Wie bereits erwähnt, gibt es andere Dinge mit dem Code falsch, aber das ist neben dem Punkt. Ich möchte nur illustrieren, was ich erreichen möchte, was Code nach eine Klasse ausgeführt wird (es spielt keine Rolle, dass es nach Belieben wieder geöffnet werden kann). Und jetzt weiß ich, das ist wahrscheinlich nicht möglich.
Danke!
Ich würde vorschlagen, dass Sie ein funktionierendes Beispiel, mit irgendwelchen "wie mache ich diese Arbeit" gebrochenes Zeug auskommentieren. In diesem Fall sollte das nur die eine Zeile sein, aber dieser Code scheint auf verschiedene Arten kaputt zu sein ... – DigitalRoss
Auch Ruby-Klassen sind offen, so dass es nie wirklich einen Zeitpunkt gibt, zu dem eine Klasse vollständig geladen ist. –
Sam, danke für die Erinnerung. Deshalb denke ich, dass es unmöglich ist, das zu tun, was ich wollte. – Ivan