注意:对一般问题的详细解答是在Stack Overflow问题中,什么是可以省略括号,点,大括号,=(函数)等的精确规则?.
以下作品:
scala> List(1,2,3) filter (_ > 1) reduceLeft(_ + _)
res65: Int = 5
Run Code Online (Sandbox Code Playgroud)
还有以下内容:
scala> List(1,2,3).filter(_ > 1).foldLeft(0)(_ + _)
res67: Int = 5
Run Code Online (Sandbox Code Playgroud)
但不是这个sytax:
scala> List(1,2,3) filter (_ > 1) foldLeft(0)(_ + _)
<console>:10: error: 0 of type Int(0) does not take parameters
List(1,2,3) filter (_ > 1) foldLeft(0)(_ + _)
^
Run Code Online (Sandbox Code Playgroud)
什么是建议的修复?
Stack Overflow问题中很好地描述了这个主题.当你可以省略括号,点,大括号,=(函数)等时,有哪些准确的规则?.
Curried函数似乎比使用一个参数的方法稍微困难一些.要省略点,curried函数需要在中缀调用之外使用括号.
正如Marimuthu Madasamy所提到的,这是有效的(对象(List),方法(foldLeft)及其第一个参数(0)在括号中):
(List(1,2,3) filter (_ > 1) foldLeft 0) (_ + _)
Run Code Online (Sandbox Code Playgroud)