2

Ruby 有“method_missing”,Tcl 有“unknown”,大多数高度动态的语言都有一个等效的构造,当调用未定义的方法时会调用该构造。添加此类功能非常有意义;有些事情需要发生,并且没有理由不允许程序员重新定义该事情。添加起来相当简单,它可以制作一些简洁的“检查我的语言可以做什么”的演示。

这种行为在实际应用程序代码中真正有用的地方在哪里?

我能想到的只有:

  • 也许对于在不展开堆栈的情况下启动调试器很有用(但我不确定这是否会算作“常规应用程序代码”,并且在大多数情况下异常也会起作用)。
  • 对于“神奇的”代理对象.. 即在第一次使用时创建或加载而不更改接口的惰性对象(尽管这似乎很容易通过其他方式完成)。

还有其他合法用途吗?

澄清:我真的不认为“避免输入引号的语法糖”是合法的用途。别人可能会,我不会。

4

1 回答 1

1

实现动态 Web 服务客户端
http://mpathirage.com/the-importance-of-rubys-method-missing-concept/

于 2010-08-31T19:30:24.143 回答