微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby – 为什么`BasicObject`回答方法`superclass`和`class`?

如果对象<在Object中定义了BasicObject和#superclass和#class,如何可能A类< BasicObject是A.superclass和A.class的答案吗? A.ancestors:[A,BasicObject] 更进一步(根据新的答案): 如果A是Object的一个实例,为什么它的祖先没有呢?

Class B;end
B.ancestors # => [B,Object,Kernel,BasicObject]

SuperClass可能在内核中定义,但A在其祖先中没有内核.

内核包含在Object中(从object.rb开始):

class Object < BasicObject
  include Kernel
end

P.S这git issue让我很困惑,可以问一下

解决方法

class A < BasicObject
end

这里,A类本身就是Class类的一个实例.

A.class
#=> Class

答案.class和.superclass因为Class支持它们.

在这种情况下,您所考虑的是A的一个实例:

A.new
(Object doesn't support #inspect)
=>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐