これが私が知らない任意のライブラリコードであると仮定します:
class Foo
def hi
end
end
class Bar < Foo
def hi
end
end
そして、パラメーターとして渡さBar
れたコードがあるとします。
def check(x)
do_something_with(x.method(:hi))
end
x.hi
上記の例では、 (x
のインスタンスを参照するBar
)がとは異なることを知ることができますFoo#hi
か?
ガレスの答えに基づいて、これは私がこれまでに得たものです:
def is_overridden?(method)
name = method.name.to_sym
return false if !method.owner.superclass.method_defined?(name)
method.owner != method.owner.superclass.instance_method(name).owner
end
恐ろしいです?素敵?