“method_missing”类型功能的合法用途是什么?

时间:2010-08-31 19:23:16

标签: language-agnostic dynamic-languages

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

这种行为在实际应用程序代码中实际上有用吗?

我能想到的只有:

  • 也许对于在不展开堆栈的情况下启动调试器很有用(但我不确定这是否会被视为“常规应用程序代码”,并且在大多数情况下异常也会起作用)。
  • 对于“神奇的”代理对象,即在不改变界面的情况下首次使用时创建或加载的惰性对象(尽管通过其他方式看起来很容易)。

还有其他合法用途吗?

澄清:我并不认为“合成糖以避免必须输入引号”才是合法用途。其他人可能,我不这样做。

1 个答案:

答案 0 :(得分:1)

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