Scala中scan和scanLeft之间的区别

时间:2014-09-17 07:03:58

标签: scala scala-collections fold

scanscanLeft之间的区别是什么?

例如,

(1 to 3).scan(10)(_-_)
res: Vector(10, 9, 7, 4)

(1 to 3).scanLeft(10)(_-_)
res: Vector(10, 9, 7, 4)

相比,

显示相同的结果

(1 to 3).scanRight(10)(_-_)
res: Vector(-8, 9, -7, 10)

1 个答案:

答案 0 :(得分:6)

(1 to 3).par.scanLeft(10)(_-_)
res: scala.collection.parallel.immutable.ParSeq[Int] = ParVector(10, 9, 7, 4)

(1 to 3).par.scanRight(10)(_-_)
res: scala.collection.parallel.immutable.ParSeq[Int] = ParVector(-8, 9, -7, 10)

(1 to 3).par.scan(10)(_-_)
res: scala.collection.parallel.immutable.ParSeq[Int] = ParVector(10, 9, -1, -4)

基本上,它取决于执行scan*(或fold*)的遍历的实现。