【发布时间】:2015-11-19 21:23:39
【问题描述】:
我能找到的最接近的是In Ruby, how do I check if method "foo=()" is defined?,但它只有在方法是公共的情况下才有效,即使在类块中也是如此。
我想要什么:
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
【问题讨论】:
-
旁注:我实际上想知道这一点,并在编写问题的过程中发现了答案。在这里发布,因为我无法轻易找到我的答案,所以我希望下一个家伙能够。