6

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

具体来说,就是这一点:

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

this: ScalatraBase =>除了段之外,这里的一切都是有意义的。它在这里有什么意义?它是特定于下面的导入还是整个特征?

4

1 回答 1

5

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

你可以在 Stack Overflow、各种博客和 Odersky 等人的经典论文中找到许多关于这个概念的处理方法。人。标题为“可扩展组件抽象”。

于 2013-06-14T00:53:02.463 回答