【发布时间】:2010-08-31 19:23:16
【问题描述】:
Ruby 有“method_missing”,Tcl 有“unknown”,大多数高度动态的语言都有一个等效的构造,当调用未定义的方法时会调用该构造。 添加此类功能非常有意义;有些事情需要发生,并且没有理由不允许程序员重新定义该事情。添加起来相当简单,它可以制作一些简洁的“检查我的语言可以做什么”的演示。
这种行为在实际应用程序代码中真正有用的地方是什么?
我能想到的只有:
- 对于在不展开堆栈的情况下启动调试器可能很有用(但我不确定这是否会算作“常规应用程序代码”,并且在大多数情况下异常也会起作用)。
- 对于“神奇的”代理对象.. 即在第一次使用时创建或加载而不更改接口的惰性对象(尽管通过其他方式似乎很容易做到)。
还有其他合法用途吗?
澄清:我并不认为“为了避免输入引号而使用语法糖”是合法的用途。其他人可能,我没有。
【问题讨论】:
标签: language-agnostic dynamic-languages