在Ruby中,对象有一个方便的方法method_missing,允许人们处理甚至没有(显式)定义的方法的方法调用:
当obj被发送一个它无法处理的消息时,由Ruby调用.symbol是被调用方法的符号,args是传递给它的任何参数.默认情况下,解释器在调用此方法时会引发错误.但是,可以覆盖该方法以提供更多动态行为.下面的示例创建一个类Roman,它响应名称由罗马数字组成的方法,返回相应的整数值.
class Roman
def romanToInt(str)
# ...
end
def method_missing(methId)
str = methId.id2name
romanToInt(str)
end
end
r = Roman.new
r.iv #=> 4
r.xxiii #=> 23
r.mm #=> 2000
Run Code Online (Sandbox Code Playgroud)
例如,Ruby on Rails使用它来允许调用诸如的方法find_by_my_column_name.
我的问题是,其他语言支持的等价物method_missing,以及如何在代码中实现等效语言?