Что на самом деле означает «внешний =>»? - PullRequest
14 голосов
/ 04 декабря 2010

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

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

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

Ответы [ 2 ]

17 голосов
/ 04 декабря 2010

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

Лучшая иллюстрация здесь .

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

6 голосов
/ 04 декабря 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...