Scala特征语法

时间:2013-06-14 00:41:41

标签: scala scalatra

我正在查看Scalatra的文档,并注意到我还没有看到的语法代码片段:http://www.scalatra.org/2.2/guides/persistence/introduction.html

具体来说,就是这个:

trait DatabaseSessionSupport { this: ScalatraBase =>
  import DatabaseSessionSupport._

this: ScalatraBase =>段外,其他所有内容都有意义。这有什么意义?它是针对下面的导入还是针对整个特征的?

1 个答案:

答案 0 :(得分:5)

这被称为“自我类型注释”,它要求在可实例化类中使用trait DatabaseSessionSupport必须伴随(“混入”)与ScalatraBase一致的类型。我没有看过这个特定的代码,但很可能是使用所谓的“蛋糕模式”。

你可以在Stack Overflow,各种博客和Odersky等的经典论文中找到这个概念的许多处理方法。人。标题为“Scalable Component Abstractions。”

相关问题