我正在查看Scalatra的文档,并注意到我还没有看到的语法代码片段:http://www.scalatra.org/2.2/guides/persistence/introduction.html
具体来说,就是这个:
trait DatabaseSessionSupport { this: ScalatraBase =>
import DatabaseSessionSupport._
除this: ScalatraBase =>
段外,其他所有内容都有意义。这有什么意义?它是针对下面的导入还是针对整个特征的?
答案 0 :(得分:5)
这被称为“自我类型注释”,它要求在可实例化类中使用trait DatabaseSessionSupport
必须伴随(“混入”)与ScalatraBase
一致的类型。我没有看过这个特定的代码,但很可能是使用所谓的“蛋糕模式”。
你可以在Stack Overflow,各种博客和Odersky等的经典论文中找到这个概念的许多处理方法。人。标题为“Scalable Component Abstractions。”