2017-02-27 3 views
0

Je suis en train de lire un tutoriel de démonstration sur la méthode de levage dans Scala. Voici le code pour la classe de base:Scala: qu'est-ce que _ représente dans ce cas

case object None extends Optional[Nothing] 

case class Presenter[+A](get: A) extends Optional[A] 

trait Optional[+A] { 
    def map[B](f: A => B): Optional[B] = this match { 
    case None => None 
    case Presenter(x) => Presenter(f(x)) 
    } 
} 

Voici la méthode de levage:

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

Ma question est: qu'est-ce soulignement ("_") représentent en fonction ci-dessus.

grâce

+0

lift renvoie une nouvelle fonction de Optional [A] à Optional [B]. Donc optionnel [A] est l'argument d'entrée de cette nouvelle fonction. Donc dans ce cas, le _ représente l'argument Optional [A] sur lequel la fonction 'map' est appelée avec l'argument 'f' de la fonction 'lift'. –

Répondre

1

_ map f est égal à (a: Optional[A]) => a.map(f), _ est générique dans Scala. pour votre exemple, cela signifie pour le paramètre avec le type Optional[A] et s'appliquent à map f

+0

merci. pouvez-vous me dire quelle règle dans scala pour nous de savoir ce que _ mappage à –

+0

La réponse en double marquée est meilleure pour vous. :) – chengpohi