ПРИМЕЧАНИЕ. Я пользуюсь Scala 2.8 - может ли это быть проблемой?
Почему я не могу использовать функцию fold
так же, как foldLeft
или foldRight
?
В Set scaladoc написано, что:
Результатом свертывания может быть только супертип параметра типа этой параллельной коллекции T
.
Но я не вижу параметра типа T
в сигнатуре функции:
def fold [A1 >: A] (z: A1)(op: (A1, A1) ⇒ A1): A1
В чем разница между foldLeft-Right
и fold
, и как я могу использовать последние?
РЕДАКТИРОВАТЬ: Например, как мне написать сгиб, чтобы добавить все элементы в список? С foldLeft
это будет:
val foo = List(1, 2, 3)
foo.foldLeft(0)(_ + _)
// now try fold:
foo.fold(0)(_ + _)
>:7: error: value fold is not a member of List[Int]
foo.fold(0)(_ + _)
^