Hi all,
一般而言,ancestors 包含三样东西,自身,祖父类,被包含进去的 Module 比方说
RUBY_VERSION # => "2.0.0"
module M; end
class A; include M; end
class B < A; end
A.ancestors #=> [A, M, Object, Kernel, BasicObject]
B.ancestors #=> [B, A, M, Object, Kernel, BasicObject]
但是如果是 Singleton class 的话似乎就不是这样了
module M; end
class A; end
class B < A; end
A.extend M
A.singleton_class.ancestors #=> [M, Class, Module, Object, Kernel, BasicObject]
B.singleton_class.ancestors #=> [M, Class, Module, Object, Kernel, BasicObject]
虽然此时B.singleton_class.superclass
会返回#<Class:A>
,但是这点并没有在B.singleton_class.ancestors
的结果中体现出来,同时它自身#<Class:B>
也没有出现在B.singleton_class.ancestors
的结果中,这是为什么?是不是 Ruby 的 Bug?谢谢