0

我试图了解蛋糕的图案。

我找到了这个要点: https ://gist.github.com/2127745

但我不明白这种语法:

// Explicit dependency on User Repository
self: UserRepositoryComponent =>

有人可以解释一下吗?

4

3 回答 3

4

这就是所谓的自类型注释。这意味着您可以假设该类的对象具有声明的类型(在本例中为 UserRepositoryComponent 或某些子类型),并且(作为奖励)允许您将该级别的“this”对象称为“self” ,或您指定的任何其他名称。self 类型的注解非常强大。它表达了对类的任何实现的要求(早期版本的 Scala 在语法上将其表示为“需要 UserRepositoryComponent”),但实际上并不意味着公开可见的类型约束(如果您说“扩展 UserRepositoryComponent”就会发生这种情况)。实现要求在带注释的类的任何实例中都被强制执行,但在其他任何地方都没有。自类型注释是“

于 2013-01-08T03:13:22.867 回答
2

这是一个自我类型的注释,例如在这里解释。如果给定了 self 类型,则将其视为 trait 中 this 的类型。它让 TraitRealUserServiceComponent通过self:UserRepositoryComment声明说它只能应用于扩展UserRepositoryCommenttrait 的类。

于 2013-01-08T00:42:33.270 回答
1

这是自类型注释。这是可以扩展您的类型的规范。像“延伸”,但方向相反。知道您的所有子类型都是 UserRepositoryComponent 的一些实现,这会给您一些额外的好处。也就是说,您可以调用它的所有方法,因为它们是您自己的。

于 2013-01-08T08:13:19.427 回答