ruby列表祖先不是mixins

xxj*_*jnn 2 ruby inheritance

最好用代码解释....

>> String.ancestors
=> [String, Comparable, Object, Kernel, BasicObject]
>> Comparable.ancestors
=> [Comparable]
>> Object.ancestors
=> [Object, Kernel, BasicObject]
>> Kernel.ancestors
=> [Kernel]
>> BasicObject.ancestors
=> [BasicObject]
Run Code Online (Sandbox Code Playgroud)

所以我怀疑继承链是String <Object <BasicObject ...而Comparable和Kernel是mixins ...

是否有一个函数'foobar'可以显示继承:

>> String.foobar
=> [Object, BasicObject]
Run Code Online (Sandbox Code Playgroud)

如果可能的话,还包括存储单例方法的隐藏元类?

saw*_*awa 6

String.ancestors.grep(Class)
Run Code Online (Sandbox Code Playgroud)

......................

  • 这基本上是[`Class.superclass`](http://ruby-doc.org/core-2.1.4/Class.html#method-i-superclass)的工作方式 - 遍历祖先并检查每个祖先的类型. (2认同)