私は、洗練が Ruby の通常の継承スキームから外れているという印象を受けました。改良内のメソッドをオーバーライドすると、改良を使用するすべてのコードの元のメソッドが置き換えられます。
しかし、その後、この実験を で試してみsuper
たところ、オーバーライドされたメソッドが呼び出されるようです。
class MyClass
def my_instance_method
puts "MyClass#my_instance_method"
end
end
module MyRefinement
refine(MyClass) do
def my_instance_method
puts "MyClass#my_instance_method in MyRefinement"
super
end
end
end
using MyRefinement
MyClass.new.my_instance_method
上記のコードは次を出力します。
MyClass#my_instance_method in MyRefinement
MyClass#my_instance_method
私の質問は、どのようにですか?改良は何らかの方法でクラス階層に挿入されていますか?