Per questo è necessario vedere come appare il modello dell'oggetto Ruby.
Ciò significa che le classi create utilizzando parole chiave class
sarà sempre la sottoclasse di Object
per impostazione predefinita. Class
non è la superclasse della classe Order
, ma è un'istanza della classe Class
. Module#ancestors
includerà l'elenco di moduli inclusi in mod (inclusa la mod stessa) e la superclasse della classe Ordine.
class Order;end
Order.superclass # => Object
Order.superclass.superclass # => BasicObject
Order.superclass.included_modules # => [Kernel]
Quindi, se si guarda l'output e capire il codice di cui sopra, allora il seguito dovrebbe ormai essere chiaro a voi:
Order.ancestors #-> [Order, Object, Kernel, BasicObject]
Ora vedere,
class Order;end
Order.class # => Class
Order.instance_of? Class # => true
Order.class.superclass # => Module
Order.class.superclass.superclass # => Object
Order.class.superclass.superclass.included_modules # => [Kernel]
Quindi, se si guarda l'output e capisci il codice sopra, quindi il seguente dovrebbe essere chiaro per te:
Order.class.ancestors #->[Class, Module, Object, Kernel, BasicObject]
Detto Order.ancestors
ti dà gli antenati della classe Order
, mentre Order.class.ancestors
ti dà gli antenati del Class
.
fonte
2013-09-27 07:41:02