Dafür müssen Sie sehen, wie das Ruby-Objektmodell aussieht.
Das heißt, die class
mit Keyword erstellt Klassen werden immer die Unterklasse von Object
standardmäßig sein. Class
ist nicht die Oberklasse Ihrer Klasse Order
, sondern eine Instanz der Klasse Class
. Module#ancestors
enthält Liste der Module in mod (einschließlich mod selbst) und die Oberklasse Ihrer Klasse Order.
class Order;end
Order.superclass # => Object
Order.superclass.superclass # => BasicObject
Order.superclass.included_modules # => [Kernel]
Wenn Sie also am Ausgang sehen und verstehen, den obigen Code, dann sollte die unten nun klar sein, Sie:
Order.ancestors #-> [Order, Object, Kernel, BasicObject]
Jetzt sehen,
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]
Also, wenn Sie schau dir den Ausgang an und versteh den obigen Code, dann sollte dir nun folgendes klar sein:
Order.class.ancestors #->[Class, Module, Object, Kernel, BasicObject]
Das heißt Order.ancestors
Sie die Vorfahren der Klasse Order
, während Order.class.ancestors
gibt Ihnen die Vorfahren der Class
gibt.