小试验,关于Ruby类的祖先链_Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > 小试验,关于Ruby类的祖先链

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

 2012/6/11 0:13:12  不注册不行吗  程序员俱乐部  我要评论(0)
  • 摘要:对于理解Ruby的方法查找过程,祖先链概念非常重要,相同模块在原祖先链的类中多次混入时,新祖先链如何呢,做了一个小试验:moduleM;endmoduleM1;endmoduleM2;endclassMyClassincludeMincludeM1endclassMySubClass<MyClassincludeMincludeM2endobj=MySubClass.newputsobj.class.ancestors()puts"\n\n\n"putsBasicObject
  • 标签: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)
发表评论
用户名: 匿名