什么是“outer =>”实际意思?

时间:2010-12-04 14:15:21

标签: scala

“outer =>”上是否有任何文档?特征?它看起来像一个带有推理类型的自我类型注释。但我觉得我错了。

如果是这种情况,是否只是表达super访问权限的另一种方式?

trait A extends (B => C) {
  outer =>
  def apply(x: B): C = outer(x)
}

2 个答案:

答案 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在范围内时仍然可用,因此它不是重命名)。