Scala中的钩子模式

Mat*_*her 5 scala

我正在寻找Scala中所有钩子的简明文档.钩子是程序流程中可以截获常见行为的任何情况.这种情况包括:

  • 宣布课程或特征
  • 访问方法和字段
  • 混合线程,继承

我来自Ruby背景,例如,method_missing允许拦截不存在的方法调用.

Scala中是否有这样的钩子?

马蒂亚斯

Dav*_*ith 7

在Scala 2.8或更早版本中没有等效的method_missing.在Scala 2.9(正在开发中)中,将添加动态特征.声明动态特征的对象的未知方法调用将由编译器自动转换为调用invokeDynamic.我们的想法是以安全和理智的方式获得动态类型语言的一些强大功能,而无需支付动态类型的性能开销(如果不需要的话).当从Scala中调用动态语言中定义的对象时,它还简化了互操作性问题.

除此之外,在Scala中挂钩新行为主要通过经典继承或通过隐式转换向对象添加新功能来完成.