电梯[A,B]中下划线的含义(f:A => B):选项[A] =>选项[B] = _映射f

lim*_*sht 5 scala

我正在研究Runar和Paul的Scala中函数式编程中的示例,我在4.3.2节中遇到了以下对lift函数的实现:

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

我理解函数的目的,但我不理解实现,因为我不明白下划线代表什么.我已经看过许多其他关于Scala中下划线含义的线程,虽然我确信这些线程必须提到这种用例,但我一定错过了它.

Cha*_*ton 12

这里的下划线是函数的简写.编译器足够智能,可以根据方法签名的返回类型推断出的含义是:

def lift[A,B](f: A => B): Option[A] => Option[B] = (_: Option[A]).map(f)
Run Code Online (Sandbox Code Playgroud)

然后扩展到:

def lift[A,B](f: A => B): Option[A] => Option[B] = (o: Option[A]) => o.map(f)
Run Code Online (Sandbox Code Playgroud)


Mik*_*ame 11

你可能想看看这个答案.的_ map f语法糖x => x map f,下划线是用于一个参数传递给一个匿名函数的占位符.