小さな実験、ルビー類の祖先鎖について
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 "
"
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)