確實:
Comparable.instance_methods # => [:clamp, :<=, :>=, :==, :<, :>, :between?]
Complex.ancestors # => [Complex, Numeric, Comparable, Object, PP::ObjectMixin, Kernel, BasicObject]
Complex.instance_methods.select{Comparable.instance_methods.include? _1} # => [:==]
當然,==也是在BasicObject中定義的,所以甚至==不算那么多。
這怎么可能?您可以在 Ruby 中洗掉祖先方法嗎?
是否可以完全洗掉方法?
uj5u.com熱心網友回復:
您可以通過兩種方式洗掉方法,undef_method并且remove_method
undef_method將洗掉完全呼叫該方法的能力,但remove_method只會洗掉當前方法,讓您回退到超級方法(如果存在)。
class Foo
undef_method :bar
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/478560.html
