當前位置:編程學習大全網 - 編程軟體 - scala中map和reduce的區別

scala中map和reduce的區別

Scala中的集合對象都有foreach和map兩個方法。兩個方法的***同點在於:都是用於遍歷集合對象,並對每壹項執行指定的方法。而兩者的差異在於:foreach無返回值(準確說返回void),map返回集合對象。見如下代碼及運行結果:b.getClass 得到的是void, 而c.getClass得到的是colletion 。再看代碼的第9-11行,foreach和map的運行結果壹致。結論就是:foreach 無法代替map. 而map方法卻可以代替foreach。

問題:為什麽scala提供foreach和map兩個方法呢?本人看法是scala做為壹種支持函數式編程範式的語言,必然要引入壹種機制以支持數學中函數概念,而在數學中函數就是映射,所以scala中有map方法壹點都不奇怪。而foreach只是用在不需要對集合執行映射操作,但需要遍歷集合時才用到。總而言之,foreach用於遍歷集合,而map用於映射(轉換)集合到另壹個集合。

[java]?view plain?copy

object?arrayTest?extends?App{?

var?increase=(x:Int)=>x+1?

val?someNumbers?=?List?(?-11,?-10,?-?5,?0,?5,?10)?

var?b?=?someNumbers.foreach(increase)?

println(b.getClass)?

var?c?=?someNumbers.map(increase)?

println(c.getClass)?

c.foreach((x:Int)=>print(x+"?"))?

println()?

c.map((x:Int)=>print(x+"?"))?

} ?

  • 上一篇:case語句是什麽?
  • 下一篇:蘿蔔丁女王權杖在鄭州哪能買到
  • copyright 2024編程學習大全網