人们可以这样做:
s="puts"
send(s,"Hello World!")
# => Hello World!
Run Code Online (Sandbox Code Playgroud)
如何检查是否s是一种方法?如果它是:
s="nomethod"
Run Code Online (Sandbox Code Playgroud)
send(s,arg) 将失败.
这很酷:
ismethod? s
PS我正在从PHP移植一些东西,它依赖于:
if (function_exists($s))
...
Run Code Online (Sandbox Code Playgroud)
如果只有Ruby有这么简单的东西.
试试这个:
respond_to?(method_name)
Run Code Online (Sandbox Code Playgroud)
如果当前对象(self)通过该名称响应方法,则它应返回true.您可以respond_to?在任何Ruby对象上使用.
http://ruby-doc.org/core/Object.html#method-i-respond_to-3F