仅当方法存在并且无论它是公共的、受保护的还是私有的在 Ruby 1.9.3 和 2.0.0 中都可以使用时,调用该方法的最佳方法是什么?
问问题
691 次
1 回答
3
respond_to?
接受第二个参数,如果设置,将忽略方法上的可见性标志。
foo.send(:method) if foo.respond_to?(:method, true)
class Foo
def pub
"public"
end
private
def priv
"private"
end
end
> f = Foo.new
> f.send(:pub) if f.respond_to?(:pub, true)
=> "public"
> f.send(:priv) if f.respond_to?(:priv)
=> nil # No second param to #respond_to? makes 2.0.0 fail the respond_to? check
> f.send(:priv) if f.respond_to?(:priv, true)
=> "private"
> f.send(:nonexist) if f.respond_to?(:nonexist, true)
=> nil
于 2013-08-15T20:49:49.033 回答