Подтвердить что ты не робот

Что означает => означает в начале определения класса Scala?

Автор вопроса Обмен типами типов с абстрактными типами написал a => в начале определения его класса. Пример:

abstract class Thing { t => 
  type A 
  type G <: Group { type A = t.A } 
  val group: G 
} 

Что означает t =>?

Поскольку это трудно найти в Google и Co, может кто-нибудь, пожалуйста, дайте мне дополнительную справочную информацию или предоставите ссылку, где я могу найти дополнительную информацию об этой языковой конструкции?

4b9b3361

Ответ 1

Именование по умолчанию для самого класса this. Вы можете заменить его на t на t =>

Это полезно, если ваш класс содержит подклассы, и вам нужен доступ к встроенной саморегуляции.

Без t => в вашем примере вы должны написать что-то вроде этого:

abstract class Thing {
  type G <: Group { type A = this.A }
}

Group { type A = this.A } является подтипом, поэтому this будет ссылаться только на специализацию группы не на предмет предмета. Наверное, вы не получите того, что хотите. Если вам нужен доступ к собственной ссылке Thing, вы должны разрешить конфликт имен, назначив себе ссылку другому имени

abstract class Thing { another_this = >
  type G <: Group { type A = another_this.A}
}