[英]Meaning of underscore in lift[A,B](f: A => B): Option[A] => Option[B] = _ map f
我正在研究Runar和Paul的Scala中的函数式编程中的示例,我在4.3.2节中遇到了以下对lift函数的实现:
def lift[A,B](f: A => B): Option[A] => Option[B] = _ map f
我理解函数的目的,但我不理解实现,因为我不明白下划线代表什么。 我已经看过许多其他关于Scala中下划线含义的线索,虽然我确信这些线程必须提到这种用例,但我一定错过了它。
这里的下划线是函数的简写。 编译器足够智能,可以根据方法签名的返回类型推断出的含义是:
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.