我正在研究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)
| 归档时间: |
|
| 查看次数: |
466 次 |
| 最近记录: |