Để biết rằng bạn cần xem mô hình đối tượng Ruby trông như thế nào.

Điều đó có nghĩa các lớp học tạo ra sử dụng từ khóa class
sẽ luôn luôn là lớp con của Object
theo mặc định. Class
không phải là siêu lớp của lớp học Order
, thay vào đó là một phiên bản của lớp Class
. Module#ancestors
sẽ bao gồm danh sách các mô-đun được bao gồm trong mod (bao gồm cả bản thân mod) và siêu lớp của lớp học của bạn Đặt hàng.
class Order;end
Order.superclass # => Object
Order.superclass.superclass # => BasicObject
Order.superclass.included_modules # => [Kernel]
Vì vậy, nếu bạn nhìn vào đầu ra và hiểu được đoạn mã trên, thì dưới đây sẽ hiện rõ ràng cho bạn:
Order.ancestors #-> [Order, Object, Kernel, BasicObject]
Bây giờ nhìn thấy,
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]
Vì vậy, nếu bạn hãy xem kết quả đầu ra và hiểu mã ở trên, khi đó bên dưới phải rõ ràng với bạn:
Order.class.ancestors #->[Class, Module, Object, Kernel, BasicObject]
Điều đó nói rằng Order.ancestors
ban cho ngươi tổ tiên của lớp Order
, trong khi Order.class.ancestors
ban cho ngươi tổ tiên của Class
.
Nguồn
2013-09-27 07:41:02