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

时间:2015-02-06 21:54:06

标签: scala

我正在使用Runar和Paul的 Scala中的函数编程一书中的示例,我在部分中遇到了以下升力函数的实现4.3.2:

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

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

2 个答案:

答案 0 :(得分:12)

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

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

反过来扩展为:

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

答案 1 :(得分:11)

您可能需要查看this answer。对于_ map fx => x map fsyntactic sugar,下划线是匿名函数参数的占位符。