我在我的.irbrc中有一个函数,它基本上是从某些输入参数构建一个字符串,然后应该检查是否存在另一个名为该字符串的函数。我就是这样做的
methodname = ... # Calculate a string if respond_to?(methodname) .... end
这对你来说不起作用?即使在我认为应该返回true的情况下也返回false。我把这个问题归结为以下几个简单的例子:
def foo end def respond_to_foo? respond_to?(:foo) end puts "Respond: #{respond_to_foo?}"
跑步 irb 假 是的 相反。不过,我还是能跑 foo 从irb内部。
irb
foo
我想这与irb定义我的方法的范围有关。例如, self.foo 不起作用( 为main:Object调用了私有方法“foo” ),而 send.foo
self.foo
send.foo
有人能启发我吗?
回答我自己的问题:我突然想到,我可以
private_methods.include?(:foo)
这确实管用,但在我看来有点像黑客。如果有人知道更好的方法,请告诉我。