Ha rubino fornisce un metodo per mostrare le chiamate gerarchia?
-
22-09-2019 - |
Domanda
Questo è tutto, voglio vedere quali sono i clases che eredita una classe fissa. C'è un metodo per questo in Ruby?
Aptana offre un'opzione che mostra questo, ma c'è qualche metodo?
Grazie
Soluzione
Stai chiedendo di vedere tutti gli antenati di una classe, o discendenti? Per antenati, utilizzare:
Class.ancestors
Non esiste un metodo paragonabile "out of the box" per i discendenti, comunque. È possibile utilizzare ObjectSpace, come qui di seguito, ma è lento e non può essere portabile su implementazioni di Ruby:
ObjectSpace.each_object(Class) do |klass|
p klass if klass < StandardError
end
Modifica
Si può anche utilizzare il Class # ereditato gancio per monitorare sottoclassi. Questo non prenderà alcun sottoclassi create prima la funzionalità di monitoraggio è definita, comunque, in modo che non può andare bene il vostro caso d'uso. Se avete bisogno di utilizzare tali informazioni a livello di codice su classi definite all'interno della vostra applicazione, tuttavia, questa potrebbe essere la strada da percorrere.
Altri suggerimenti
Esempio:
class Foo
end
class Bar < Foo
end
Bar.ancestors # => [Bar, Foo, Object, Kernel]