nsf*_*n55 11 functional-programming scala
任何人都可以解释为什么我在下面省略了应用foldLeft函数的点符号时会看到以下编译错误?(版本2.9.2)
scala> val l = List(1, 2, 3)
res19: List[Int] = List(1 ,2 ,3)
scala> l foldLeft(1)(_ * _)
<console>:9: error: Int(1) does not take parameters
l foldLeft(1)(_ * _)
^
Run Code Online (Sandbox Code Playgroud)
但
scala> l.foldLeft(1)(_ * _)
res27: Int = 6
Run Code Online (Sandbox Code Playgroud)
这不适用于其他更高阶的功能,例如map我似乎不关心我是否提供点.
我不认为它是一个相关性的东西,因为我不能只是调用它 foldLeft(1)
Pau*_*her 18
这是因为foldLeft是咖喱的.除了使用点表示法,您还可以通过添加括号来解决此问题:
scala> (l foldLeft 1)(_ * _)
res3: Int = 6
Run Code Online (Sandbox Code Playgroud)
哦 - 关于你无法调用的评论foldLeft(l),你可以,但你需要部分应用它:
scala> (l foldLeft 1) _
res3: ((Int, Int) => Int) => Int = <function1>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1478 次 |
| 最近记录: |