method_missing的
*obj.method_missing(符号h,args i)→other_obj
当obj被发送一个它无法处理的消息时,由Ruby调用.symbol是被调用方法的符号,args是传递给它的任何参数.下面的示例创建一个类Roman,它响应名称由罗马数字组成的方法,返回相应的整数值.method_missing的更典型用法是实现代理,委托和转发器.
class Roman
def roman_to_int(str)
# ...
end
def method_missing(method_id)
str = method_id.id2name
roman_to_int(str)
end
end
r = Roman.new
r.iv ! 4
r.xxiii ! 23
r.mm ! 2000
Run Code Online (Sandbox Code Playgroud)
我刚刚听说方法缺失,并在Ruby编程中找到了更多信息,但本书引用的上述解释是我的头脑.有没有人有更简单的解释?更具体地说,方法缺失仅由解释器使用,或者是否需要直接在程序中调用它(假设我只是编写Web应用程序,而不是为NASA编写代码)?