我能找到的最接近的是In Ruby, how do I check if method "foo=()" is defined?,但只有當方法是公開的時候,即使在類塊內部時,它也是可用的。如何檢查私有方法是否在ruby中定義
我想要什麼:
class Foo
private
def bar
"bar"
end
magic_private_method_defined_test_method :bar #=> true
end
我已經試過:
class Foo
private
def bar
"bar"
end
respond_to? :bar #=> false
#this actually calls respond_to on the class, and so respond_to :superclass gives true
defined? :bar #=> nil
instance_methods.include?(:bar) #=> false
methods.include?(:bar) #=> false
method_defined?(:bar) #=> false
def bar
"redefined!"
end # redefining doesn't cause an error or anything
public
def bar
"redefined publicly!"
end #causes no error, behaves no differently whether or not #bar had been defined previously
end
附註:我*實際上*想知道這一點,並在編寫問題的過程中發現了答案。因爲我無法輕鬆找到我的答案,因此我希望下一個傢伙能夠做到。 – Shelvacu