2015-02-06 15 views
5

Pracuję nad przykładami w programowaniu funkcjonalnym Runaru i Paula w Scala książka, a ja natrafiłem następującym realizacji funkcji podnoszenia w punkcie 4.3.2:Znaczenie podkreślenia w podnośniku [A, B] (f: A => B): Opcja [A] => Opcja [B] = _ mapa f

def lift[A,B](f: A => B): Option[A] => Option[B] = _ map f

rozumiem cel funkcji, ale nie rozumiem, ponieważ wdrożenie Nie rozumiem, co oznacza podkreślenie. Spojrzałem na wiele innych wątków na temat niezliczonych znaczeń podkreślenia w Scali i chociaż jestem pewien, że te wątki muszą wspomnieć o tego rodzaju przypadku użycia, to musiałem go nie zauważyć.

Odpowiedz

12

Podkreślenie w tym miejscu jest skrótem funkcji. Kompilator jest wystarczająco inteligentny, aby wywnioskować, na podstawie typu powrotnej podpis metody, które, co rozumie się:

def lift[A,B](f: A => B): Option[A] => Option[B] = (_: Option[A]).map(f) 

co z kolei rozszerza się:

def lift[A,B](f: A => B): Option[A] => Option[B] = (o: Option[A]) => o.map(f) 
10

Możesz chcieć mieć spójrz na this answer. Argument _ map f dla x => x map f jest podkreślnikiem będącym symbolem zastępczym argumentu dla funkcji anonimowej.

+0

Dzięki. Chciałbym przegłosować, ale moja reputacja jest zbyt niska. Naprawdę potrzebowałem twojej odpowiedzi (i opublikowanego przez ciebie linka) na myśl, że _ reprezentuje parametry pozycyjne w anonimowej funkcji, aby w pełni zapaść. – liminalisht

Powiązane problemy