Scala – Reduce, fold or scan (Left/Right)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// Scala - Reduce, fold or scan (Left/Right) //reduceLeft, reduceRight, foldLeft, foldRight, scanLeft, scanRight object Demo { val lst = List(1, 2, 3, 5, 7, 10, 13); val lst2 = List("A", "B", "C"); def main(args: Array[String]) { println(lst.reduceLeft(_ + _)); println(lst2.reduceLeft(_ + _)); println(lst.reduceLeft((x,y) => {println(x + " , "+ y); x+y;})); println(lst.reduceLeft(_ - _)); println(lst.reduceRight(_ - _)); println(lst.reduceRight((x,y) => {println(x + " , "+ y); x-y;})); println(lst.foldLeft(100)(_ + _)); println(lst2.foldLeft("z")(_ + _)); println(lst.scanLeft(100)(_ + _)); println(lst2.scanLeft("z")(_ + _)); } } |