Ich habe ein klasse:
class TestClass
def method1
end
def method2
end
def method3
end
end
Wie kann ich eine Liste meiner Methoden in dieser Klasse erhalten ( method1
, method2
, method3
)?
ruby
reflection
ruby-1.9.2
Vladimir Tsukanov
quelle
quelle
print TestClass.new.instance_methods
, bekomme ich diesen Fehlermy_class.rb:10:in <main>: undefined method instance_methods for #<TestClass:0x96b9d20> (NoMethodError)
TestClass.new.methods
. Vielleicht war "es" in meiner Antwort mehrdeutig.[:method1]
stattdessen bekommen würdest .um nur Methoden zu erhalten, die nur zu dieser Klasse gehören.
TestClass.instance_methods(false)
würde die Methoden aus Ihrem angegebenen Beispiel zurückgeben (da es sich um Instanzmethoden von TestClass handelt).quelle
oder ohne alle geerbten Methoden
(War 'TestClass.methods - Object.methods')
quelle
TestClass.methods(false)
.TestClass.methods(false)
kehrt leer zurückmethod1
,method2
odermethod3
, wie die Methoden der sind Instanzen der Klasse, nicht Methoden desTestClass
Objekts selbst.Sie können eine detailliertere Liste (z. B. strukturiert durch Definieren der Klasse) mit Edelsteinen wie Debugging oder Looksee erhalten .
quelle
quelle
Laut Ruby Doc instance_methods
Lassen Sie uns die Ausgabe sehen.
quelle
So erhalten Sie nur eigene Methoden und schließen geerbte aus:
Aus der Instanz heraus:
Von außen:
Fügen Sie es der Klasse hinzu:
(mit Rubin 2.6.x)
quelle