Скала: сложить против сложить
Я пытаюсь понять, как работают fold и foldLeft и соотвествующие Reduce и ReduleLeft. Я использовал Fold и FoldLeft в качестве примера.
scala> val r = List((ArrayBuffer(1, 2, 3, 4),10))
scala> r.foldLeft(ArrayBuffer(1,2,4,5))((x,y) => x -- y._1)
scala> res28: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(5)
scala> r.fold(ArrayBuffer(1,2,4,5))((x,y) => x -- y._1)
:11: error: value _1 is not a member of Serializable with Equals
r.fold(ArrayBuffer(1,2,4,5))((x,y) => x -- y._1)
Зачемfold
А не было»т работать какfoldLeft
? Что такоеSerializable with Equals
? Я понимаю, что fold и foldLeft имеют слегка отличающуюся сигнатуру API с точки зрения универсальных типов параметров. Пожалуйста, порекомендуйте. Благодарю.