Я не уверен, в чем разница между fold
и foldLeft
в Scala.
Вопрос Разница между fold и foldLeft или 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 для умножение.)
Почему он будет добавляться произвольным числом раз? Я думал, что складывание работает по-другому.