注意:更一般的问题的详细答案在Stack Overflow问题 What are the precise rules for when you can omit parenthesis, dots, braces, = (functions), etc.? 。
以下作品:
scala> List(1,2,3) filter (_ > 1) reduceLeft(_ + _)
res65: Int = 5
还有以下内容:
scala> List(1,2,3).filter(_ > 1).foldLeft(0)(_ + _)
res67: Int = 5
但不是这个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)(_ + _)
^
建议的修正是什么?
答案 0 :(得分:7)
Stack Overflow问题 What are the precise rules for when you can omit parenthesis, dots, braces, = (functions), etc.? 中详细介绍了此主题。
Curried函数似乎比使用一个参数的方法稍微困难一些。要省略点,curried函数需要在中缀调用之外使用括号。
作为Marimuthu Madasamy mentioned,这是有效的(对象(List),方法(foldLeft)及其第一个参数(0)在括号中):
(List(1,2,3) filter (_ > 1) foldLeft 0) (_ + _)
答案 1 :(得分:4)
这有效:
(List(1,2,3) filter (_ > 1) foldLeft 0) (_ + _)