2014-09-17 16 views
6

Quali sono le differenze tra scan e scanLeft?Differenza tra scansione e scanLeft in Scala

Ad esempio,

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

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

consegnare lo stesso risultato, chiaramente in contrasto

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

risposta

5
(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) 

Fondamentalmente, dipende dall'implementazione del attraversabile di come scan* (o fold*) viene eseguito.