`
不注册不行吗
  • 浏览: 5331 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

小试验,关于Ruby类的祖先链

阅读更多

对于理解Ruby的方法查找过程,祖先链概念非常重要,相同模块在原祖先链的类中多次混入时,新祖先链如何呢,做了一个小试验:

 

module M; end
module M1; end
module M2; end

class MyClass
  include M
  include M1
end

class MySubClass < MyClass
  include M
  include M2
end

obj = MySubClass.new
puts obj.class.ancestors()
puts "\n\n\n"

puts BasicObject.superclass==nil

def my_ancestors(current_class)
  a = []
  a.push current_class
  sc = current_class.superclass
  until sc==nil
    a.push sc
    sc = sc.superclass
  end
  a
end

puts my_ancestors(obj.class)
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics