Scala:自我类型注释

Fal*_*lko 0 scala self-type

(试图通过探测边界来理解自我类型的使用.)

这不能被实例化(D和String是类,但必须混合其中一个.加上String是final.).但它还有其他用途吗?

class D { 
    foo: String => 
    def f2 = foo.substring(1) 
}
Run Code Online (Sandbox Code Playgroud)

更新:对不起,我似乎不善于提问.我想知道的是这个奇怪的特殊情况是否有意义.D类永远无法实例化的情况,如1.我不能混合使用String,因为它不是tarit.2.我不能混合D,因为.. 3.我不能扩展String,因为它是最终的.

yan*_*yan 5

自我类型注释通常有两个目的:

  1. 强制执行某个基类/特征,并确保您的类或特征只能由该类型继承或混合,并且
  2. 在实施内壳时参考外壳.(如果不是这种语法,'this'会引用什么?)

我不确定我理解你的例子或背后的推理.阐述?