"outer =>"究竟意味着什么?

Joa*_*ert 14 scala

是否有关于"outer =>"功能的文档?它看起来像一个带有推理类型的自我类型注释.但我觉得我错了.

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

trait A extends (B => C) {
  outer =>
  def apply(x: B): C = outer(x)
}
Run Code Online (Sandbox Code Playgroud)

ped*_*rla 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 ? (*)
 }
}
Run Code Online (Sandbox Code Playgroud)

有一个更好的说明这里.

(*)存在另一种具有相同效果的方法,但它超出了这个问题.


Deb*_*ski 6

这是一种不同的访问方式this.在外部this将被this内部类中的另一个遮蔽的情况下,它很有用.这样,您可以给外部添加this一个额外的(this当它在范围内时原始仍然可用,因此它不是重命名).