【发布时间】:2017-05-11 11:33:30
【问题描述】:
我的示例使用 sum 函数,但这不是我遇到问题的唯一高阶函数。
重点
已经有一段时间了,但我一直在写这样的代码:
scala> List(2, 5, 7, 11) sum / 3
这给了我:
<console>:1: error: ';' expected but integer literal found.
当我添加括号时:
(List(2, 5, 7, 11) sum) / 3
我得到了我的期望:
res3: Int = 8
所以这是我的问题。为什么运算符优先级会这样工作?为什么它不推断括号?
是否有任何反例可以表明这种推断会导致 scala 中出现根本错误的结果?
为什么使用
.会改变任何东西。为什么l.sum / 13有效?
【问题讨论】:
-
一方面,后缀运算符(如
List(2, 5, 7, 11) sum中的sum)已经隐藏在标志后面一段时间了。我认为它们或多或少已被弃用。
标签: scala list sum higher-order-functions operator-precedence