definiert ist Die nächste, die ich finden kann, ist In Ruby, how do I check if method "foo=()" is defined?, aber es funktioniert nur, wenn die Methode öffentlich ist, auch wenn innerhalb des Klassenblocks.Wie überprüft man, ob private Methode in Ruby
Was ich will:
class Foo
private
def bar
"bar"
end
magic_private_method_defined_test_method :bar #=> true
end
Was ich versucht habe:
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
Seitennotiz: Ich habe mich * wirklich * gewundert und die Antwort im Verlauf des Schreibens der Frage entdeckt. Posted hier, da ich meine Antwort nicht leicht finden konnte und so hoffe ich, dass der nächste Kerl in der Lage sein wird. – Shelvacu