是什么阻止了静态类型语言有类似Ruby的method_missing的东西?

Dus*_*tin 12 ruby coldfusion scala static-typing method-missing

我对静态类型语言没有多少经验(目前正在学习Scala并喜欢它!)但我注意到的一件事是它们似乎没有像Ruby的method_missing或ColdFusion的onMissingMethod那样的东西.静态类型语言是否存在一些固有的限制,可以防止或使其变得困难?

Ran*_*ulz 21

当然可以添加一个处理它们的机制,但它与静态类型的不一致:编译时确定您的程序没有类型错误.

附录

Scala 2.9引入了一个实验选项,可以通过这种方式动态处理对类型的访问,否则会导致静态类型检查失败.虽然它仍然由默认禁用功能标志控制,但它在2.10中被改进并变为非实验性的.您可以在SIP 17文档中阅读相关内容.有关Scala 2.10的"模块化"和功能标志的说明,请参阅SIP 18.

  • 反射API也违反了它,但它们在大多数现代静态语言中都存在并被高度使用 (5认同)