/ / Co oznacza symbol „That” w Scala - scala, generics

Co oznacza symbol "To" w Scala - scala, generics

Widziałem kilka przykładów kodu używającego symbolu „That” z Generics. Tj.

def map[B, That](f : (A) => B) : That

Ale z powodu braku możliwości wyszukiwania tego słowa w Google, nie mogę znaleźć żadnej dokumentacji dotyczącej tego, co robi i jak go używam.

Czy to zwykły symbol zastępczy zwykłego typu, czy robi coś specjalnego?

Odpowiedzi:

13 dla odpowiedzi nr 1

Wszelkie identyfikatory w środku [...] są traktowane jako parametry typu.

Więc w przypadku def map[B, That](f : (A) => B) : That That oznacza tylko ogólny typ zwrotu. Zamień na Z na przykład: def map[B, Z](f : (A) => B) : Z miałby dokładnie taki sam efekt.


3 dla odpowiedzi № 2

W tłumaczeniu na Javę byłoby to:

public <B, That> That map(f: Function1<A, B>)

Lub innymi słowy That jest ogólnym (lub, w języku Scala lingo, parametrem typu).


3 dla odpowiedzi nr 3

Jest to „symbol zastępczy”, jak go nazywasz (to jest parametr typu); konwencją w bibliotece kolekcji jest użycie That reprezentujący typ kolekcji, która zostanie utworzona. (W ten sposób przekształcasz się z this do That.)