Mam klasę:
class TestClass
def method1
end
def method2
end
def method3
end
end
Jak mogę uzyskać listę moich metod w tej klasie ( method1
, method2
, method3
)?
ruby
reflection
ruby-1.9.2
Vladimir Tsukanov
źródło
źródło
print TestClass.new.instance_methods
, pojawia się ten błądmy_class.rb:10:in <main>: undefined method instance_methods for #<TestClass:0x96b9d20> (NoMethodError)
TestClass.new.methods
. Może „to” było w mojej odpowiedzi niejednoznaczne.[:method1]
zamiast tego dostałbyś.aby uzyskać tylko metody należące tylko do tej klasy.
TestClass.instance_methods(false)
zwróci metody z podanego przykładu (ponieważ są one metodami instancji TestClass).źródło
lub bez wszystkich odziedziczonych metod
(Było „TestClass.methods - Object.methods”)
źródło
TestClass.methods(false)
.TestClass.methods(false)
powraca pustymethod1
,method2
lubmethod3
, ponieważ są to metody wystąpień klasy, a nie metodyTestClass
samego obiektu.Możesz uzyskać bardziej szczegółową listę (np . Uporządkowaną przez zdefiniowanie klasy) z klejnotami, takimi jak debugowanie lub looksee .
źródło
źródło
Według Ruby Doc instance_methods
Zobaczmy wynik.
źródło
Aby uzyskać tylko własne metody i wykluczyć odziedziczone:
Z poziomu instancji:
Z zewnątrz:
Dodaj to do zajęć:
(z rubinem 2.6.x)
źródło