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

È stato utile?

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

Module # antenati

Esempio:

class Foo
end

class Bar < Foo
end

Bar.ancestors # => [Bar, Foo, Object, Kernel]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top