有人能解释一下下面写的Scala代码吗?
trait A extends B {
self =>
type S >: self.type <: A
def instance: S = self
}
答案 0 :(得分:8)
这条线
self =>
是一个自我类型的声明,没有类型,所以在特征A中,self就是这个的同义词。
这条线
type S >: self.type <: A
定义一个带有上限和下限的类型S.
所以S必须是A的子类型和self类型的超类型(这是A的具体类型)
然后就行了
def instance: S = self
定义一个没有参数的方法,一种名为instance的属性,它将这个属性返回给S。
最后,为什么这段代码,我不知道,我不喜欢这种代码。