Scala特质语法

6
我正在查看Scalatra的文档,并注意到一个有趣的代码片段,涉及我以前没有见过的语法:http://www.scalatra.org/2.2/guides/persistence/introduction.html 具体来说,就是这一部分:
trait DatabaseSessionSupport { this: ScalatraBase =>
  import DatabaseSessionSupport._

除了 this: ScalatraBase => 段落外,这里的所有内容都是有意义的。它在这里有什么特殊的意义?它是针对下面的导入还是整个 Trait 的?

1个回答

5
那被称为“自类型注释”,它要求在可实例化类中使用 trait DatabaseSessionSupport 时必须附带(“混入”)与 ScalatraBase 一致的类型。我没有查看这个特定代码,但它很可能是所谓的“蛋糕模式”的用法。
您可以在 Stack Overflow、各种博客和 Odersky 等人撰写的经典论文“可扩展组件抽象”中找到许多关于这个概念的处理方法。

非常好的答案,帮助很大。谢谢。 - randombits

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接