Что означает "внешний =>"?

Есть ли какая-либо документация по функции "внешний = > "? Это похоже на аннотацию типа self с выведенным типом. Однако у меня такое чувство, что я ошибаюсь.

Если бы это было так, это только другой способ выразить доступ к super?

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

Ответы

Ответ 1

Не 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 ? (*)
 }
}

Здесь представлена ​​более качественная иллюстрация .

(*) Существует другой способ получить тот же эффект, но это выходит за рамки этого вопроса.

Ответ 2

Это другой способ доступа к this. Это полезно в случаях, когда внешний this будет затенен другим this во внутреннем классе. Таким образом, вы можете просто предоставить внешний this дополнительный (исходный this будет по-прежнему доступен, когда он находится в области видимости, так что это не переименование).