Mi chiedo se esiste una chiamata al metodo Ruby che mostra solo i metodi definiti dall'oggetto Ruby da cui è chiamato, al contrario di tutti i metodi definiti dalle sue classi antenate, che è ciò che sembra fare methods
.Come ispezionare i metodi di un oggetto Ruby?
risposta
methods
accetta un parametro booleano facoltativo, che specifica se elencare anche i metodi dalla classe dell'oggetto e le sue superclassi o solo i metodi di singleton dell'oggetto. Quindi puoi fare obj.methods(false)
per ottenere solo i metodi singleton definiti su obj
.
Se si desidera che i metodi definiti dalla classe dell'oggetto, ma non quelli definiti dalle sue superclassi, è possibile ottenerlo chiamando lo instance_methods(false)
nella classe dell'oggetto, quindi è obj.class.instance_methods(false)
.
Hai alcune opzioni - object.methods
, object.public_methods
, object.singleton_methods
... dipende da ciò che desideri. Dal momento che entrambi restituiscono un array, si potrebbe desiderare di provare qualcosa di simile:
# obj is the current object
parent = obj.class.superclass
methods = (obj.methods - parent.methods)
io ho un debole per obj.methods.sort
ma alcune delle altre risposte sono migliori in alcuni casi, in quanto descrivono
È inoltre possibile utilizzare obj.methods.sort.grep /foo/
per trovare i nomi dei metodi che corrispondono alla regexp. Questo è utile quando hai un'idea di cosa stai cercando.
- 1. Come elencare tutti i metodi per un oggetto in Ruby?
- 2. Ruby: cattura tutti i metodi inviati a un oggetto
- 3. Come ispezionare un oggetto specifico in IPython
- 4. Visualizza i metodi disponibili ruby
- 5. È possibile ispezionare un singolo oggetto nodo?
- 6. Come ispezionare un oggetto in script come in scala console?
- 7. come ispezionare/iterare su un oggetto nel nodo?
- 8. Come ispezionare i telai di tela
- 9. funzioni di Ruby vs metodi
- 10. Come vedo i metodi associati a un oggetto in Clojure?
- 11. Come ispezionare una libreria?
- 12. Come posso testare i metodi in un oggetto metodo?
- 13. Ottenere tutti i metodi di istanza di un oggetto CoffeeScript
- 14. Come chiamare dinamicamente i metodi di accesso in Ruby
- 15. Come preferisci definire i metodi di classe in Ruby?
- 16. Ruby to_json: metodi argomenti
- 17. Come posso ispezionare un modulo Perl 6?
- 18. ejabberd: ispezionare i tavoli Mnesia?
- 19. Come aggiungere metodi a un prototipo di un oggetto (JSON)?
- 20. È possibile identificare i metodi con alias in Ruby?
- 21. Ruby: caso tramite oggetto
- 22. Come si incapsulano i metodi del modulo inclusi in Ruby?
- 23. Come si spostano i metodi Ruby in VIM?
- 24. Ruby: metodi come elementi dell'array - come funzionano?
- 25. Utilizzo dei simboli come argomenti per i metodi ruby
- 26. Come faccio a convincere ruby-prof a ignorare i metodi core/gemma/core standard di Ruby?
- 27. metodi privati in Ruby
- 28. Come ispezionare gli oggetti om?
- 29. Cercando di capire i metodi .kr e .ord Ruby
- 30. Come ispezionare una classe in Objective-C?
Intendi 'parent = obj.class.superclass', giusto? – sepp2k
'whatever.methods' restituisce un' Array' nella versione di Ruby in esecuzione. Lo stesso con 'whatever.public_methods'. – cHao
@ sepp2k - sì, grazie - risolto! – sethvargo