Что означает "внешний =>"?
Есть ли какая-либо документация по функции "внешний = > "? Это похоже на аннотацию типа 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
будет по-прежнему доступен, когда он находится в области видимости, так что это не переименование).