方法缺失
*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
我刚刚听说缺少方法,并在Programming Ruby中找到了更多信息,但是书中引用的上述解释超出了我的理解。有没有人有更简单的解释?更具体地说,缺少方法是否仅由解释器使用,或者是否需要直接在程序中调用它(假设我只是在编写 Web 应用程序,而不是为 NASA 编写代码)?