我在查看Scalatra的文档时发现了一个有趣的语法代码段,我尚未在以下位置看到它:http://www.scalatra.org/2.2/guides/persistence/introduction.html
具体来说就是:
trait DatabaseSessionSupport { this: ScalatraBase =>
import DatabaseSessionSupport._
除了
this: ScalatraBase =>
段,这里的所有内容都有意义。它在这里有什么意义?它是针对下面的导入还是针对整个特征? 最佳答案
这就是所谓的“自我类型注释”,它要求在可实例化的类中对trait DatabaseSessionSupport
的任何使用都必须伴随(与“mixed in”一起)与ScalatraBase
一致的类型。我没有看过这个特定的代码,但是很可能是使用了所谓的“蛋糕模式”。
在Stack Overflow,各种博客和Odersky等人的经典论文中,您都可以找到许多有关此概念的方法。 al。标题为“Scalable Component Abstractions”。
关于Scala特征语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17099450/