我的印象是细化超出了 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
我的问题是,怎么做?细化是否以某种方式插入到类层次结构中?