【问题标题】:What are the legitimate uses for "method_missing"-type functionality?“method_missing”类型功能的合法用途是什么?
【发布时间】:2010-08-31 19:23:16
【问题描述】:

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

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

我能想到的只有:

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

还有其他合法用途吗?

澄清:我并不认为“为了避免输入引号而使用语法糖”是合法的用途。其他人可能,我没有。

【问题讨论】:

    标签: language-agnostic dynamic-languages


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2015-05-09
      • 1970-01-01
      • 2012-08-17
      • 2012-04-04
      • 2012-09-02
      • 1970-01-01
      相关资源
      最近更新 更多