小试验,关于Ruby类的祖先链
对于理解Ruby的方法查找过程,祖先链概念非常重要,相同模块在原祖先链的类中多次混入时,新祖先链如何呢,做了一个小试验:
?
module M; endmodule M1; endmodule M2; endclass MyClass include M include M1endclass MySubClass < MyClass include M include M2endobj = MySubClass.newputs obj.class.ancestors()puts "\n\n\n"puts BasicObject.superclass==nildef my_ancestors(current_class) a = [] a.push current_class sc = current_class.superclass until sc==nil a.push sc sc = sc.superclass end aendputs my_ancestors(obj.class)