ПРИМЕЧАНИЕ. Я нахожусь в Scala 2.8-can, что может быть проблемой?
Почему я не могу использовать функцию fold
так же, как foldLeft
или foldRight
?
В Set scaladoc говорится, что:
Результат сгибания может быть только супертипом этого параметра типа параллельной коллекции
T
.
Но я не вижу параметра типа T
в сигнатуре функции:
def fold [A1 >: A] (z: A1)(op: (A1, A1) ⇒ A1): A1
В чем разница между foldLeft-Right
и fold
, и как использовать последнюю?
EDIT: Например, как бы я написал сводку, чтобы добавить все элементы в список? С 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)(_ + _)
^