在Scala函数式编程这本书中,有一个'Lift'的例子,其中一个类型为
以下是lift的实现方式:
A => B
的函数被提升为Option[A] => Option[B]
。以下是lift的实现方式:
def lift[A,B](f: A => B):Option[A] => Option[B] = _ map f
我有几个关于这个的困惑:
第一个是,这里的'_'是什么?其次,当我从def中删除返回类型,期望类型推断做它的魔法时,我会得到以下异常:
scala> def lift[A,B](f: A => B) = _ map f
<console>:7: error: missing parameter type for expanded function ((x$1) => x$1.map(f))
def lift[A,B](f: A => B) = _ map f
有人能解释一下这里发生了什么吗?
谢谢