任何人都可以在scala中解释我这段代码吗?

时间:2018-05-03 08:19:45

标签: scala

有人能解释一下下面写的Scala代码吗?

 trait A extends B {
  self =>
  type S >: self.type <: A
  def instance: S = self
}

1 个答案:

答案 0 :(得分:8)

这条线     self => 是一个自我类型的声明,没有类型,所以在特征A中,self就是这个的同义词。

这条线     type S >: self.type <: A 定义一个带有上限和下限的类型S. 所以S必须是A的子类型和self类型的超类型(这是A的具体类型)

然后就行了     def instance: S = self 定义一个没有参数的方法,一种名为instance的属性,它将这个属性返回给S。

最后,为什么这段代码,我不知道,我不喜欢这种代码。