Eu tenho uma aula:
class TestClass
def method1
end
def method2
end
def method3
end
end
Como posso obter uma lista dos meus métodos dessa classe ( method1
, method2
, method3
)?
ruby
reflection
ruby-1.9.2
Vladimir Tsukanov
fonte
fonte
print TestClass.new.instance_methods
, recebo este erromy_class.rb:10:in <main>: undefined method instance_methods for #<TestClass:0x96b9d20> (NoMethodError)
TestClass.new.methods
. Talvez "isso" tenha sido ambíguo em minha resposta.[:method1]
em seu lugar.para obter apenas métodos que pertencem apenas a essa classe.
TestClass.instance_methods(false)
retornaria os métodos do seu exemplo dado (uma vez que são métodos de instância de TestClass).fonte
ou sem todos os métodos herdados
(Era 'TestClass.methods - Object.methods')
fonte
TestClass.methods(false)
.TestClass.methods(false)
retorna vaziomethod1
,method2
oumethod3
, como esses são métodos de instâncias da classe, não métodos doTestClass
próprio objeto.Você pode obter uma lista mais detalhada (por exemplo, estruturada pela definição de classe) com joias como depuração ou looksee .
fonte
fonte
De acordo com Ruby Doc instance_methods
Vamos ver o resultado.
fonte
Para obter apenas métodos próprios e excluir os herdados:
De dentro da instância:
De fora:
Adicione-o à classe:
(com ruby 2.6.x)
fonte