我不确定在Scala中fold
和foldLeft
的区别是什么。
这个问题“Difference between fold and foldLeft or foldRight?”有一个回答讨论了顺序。这是可以理解的。但我仍然不明白为什么这样会起作用(来自REPL):
scala> Array("1","2","3").foldLeft(0)(_ + _.toInt)
res6: Int = 6
但是这个不行:scala> Array("1","2","3").fold(0)(_ + _.toInt)
<console>:8: error: value toInt is not a member of Any
Array("1","2","3").fold(0)(_ + _.toInt)
^
这个错误信息的意思是什么?
我也感到文档中的这一行很困惑。
z - 折叠操作的中性元素;可以任意添加到结果中,且不能改变结果(例如,在列表连接中为Nil,在加法中为0,在乘法中为1)。
为什么它会被任意次数地添加?我以为折叠的工作方式不同。