“outer =>”上是否有任何文档?特征?它看起来像一个带有推理类型的自我类型注释。但我觉得我错了。
如果是这种情况,是否只是表达super
访问权限的另一种方式?
trait A extends (B => C) {
outer =>
def apply(x: B): C = outer(x)
}
答案 0 :(得分:17)
不是super
,而是外部范围。这是一种别名不同范围的方法。例如:
class A(val x:Int) { thisA =>
class B {
val x = 2
val y = x + thisA.x // without thisA how could we use A.x instead of B.x ? (*)
}
}
有一个更好的插图here。
(*)还有另一种方法可以产生同样的效果,但这超出了这个问题。
答案 1 :(得分:6)
这是访问this
的另一种方式。在外部this
被内部类中的另一个this
遮蔽的情况下,它很有用。这样,您可以只为外部this
添加一个(原始this
在范围内时仍然可用,因此它不是重命名)。