相关疑难解决方法(0)

Ruby的method_missing在其他语言中是否有等价物?

在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,以及如何在代码中实现等效语言?

language-features programming-languages method-missing

21
推荐指数
10
解决办法
3393
查看次数