/ / Significado del subrayado en la elevación [A, B] (f: A => B): Opción [A] => Opción [B] = _ mapa f - scala

Significado del guion bajo en el levantamiento [A, B] (f: A => B): Opción [A] => Opción [B] = _ mapa f - scala

Estoy trabajando a través de los ejemplos en Runar y Paul Programación Funcional en Scala libro, y he encontrado la siguiente implementación de la función de elevación en la sección 4.3.2:

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

Entiendo el propósito de la función, peroNo entiendo la implementación porque no entiendo lo que representa el subrayado. He mirado muchos otros hilos sobre los innumerables significados del subrayado en Scala, y aunque estoy seguro de que esos hilos deben mencionar este tipo de caso de uso, debo haberlo pasado por alto.

Respuestas

12 para la respuesta № 1

El subrayado aquí es una abreviatura para una función. El compilador es lo suficientemente inteligente como para inferir, según el tipo de retorno de la firma del método, que lo que se entiende es:

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

que a su vez se expande a:

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

10 para la respuesta № 2

Es posible que desee echar un vistazo a esta respuesta. los _ map f es azúcar sintáctica para x => x map f, el subrayado es un marcador de posición para un argumento a una función anónima.