Warum funktioniert Module.method_defined? (: method) nicht richtig?

8

Ich versuche zu überprüfen, ob eine Methode in einem Modul mit Module.method_defined?(:method) definiert ist und es false zurückgibt, es sollte wahr sein.

%Vor%

Something.methods hat "eine andere" aufgelistet, aber Something.method_defined?(:another) gibt false zurück.

Funktioniert das vielleicht nicht, weil die Methode auf sich selbst definiert ist? Wenn dies der Fall ist, gibt es eine andere Möglichkeit, zu überprüfen, ob die Methode auf dem Modul anders als method_defined? definiert ist?

    
John Duff 31.12.2009, 03:54
quelle

2 Antworten

10

Um zu wissen, ob das Modul eine Modulmethode hat, können Sie reply_to verwenden? auf der Modul:

%Vor%

methode_definiert? wird Ihnen sagen, ob INSTANCES der Klasse mit dem enthaltenen Modul auf die angegebene Methode reagiert.

    
ennuikiller 31.12.2009, 04:14
quelle
5

Modulmethoden sind in ihrer Metaklasse definiert. Sie können also auch prüfen, ob eine Methode in die Methode aufgenommen wird:

%Vor%

Sie können mehr darüber in lesen Ruby-Metaklassen verstehen .

    
paradigmatic 31.12.2009 10:26
quelle

Tags und Links