scala中map和foreach的區別

2021-07-22 13:38:00 字數 770 閱讀 7634

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用於對映**換)集合到另乙個集合。

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+" "))

}

scala中獲取Map中key和value的方法

val scores map alice 10,bob 3,cindy 8 獲取所有的key val namelist scores.map 1 map 函式返回list println namelist.getclass 遍歷list中的元素 namelist.foreach x string p...

Scala 中的foreach和map方法比較

scala中的集合物件都有foreach和map兩個方法。兩個方法的共同點在於 都是用於遍歷集合物件,並對每一項執行指定的方法。而兩者的差異在於 foreach無返回值 準確說返回void map返回集合物件。見如下 及執行結果 b.getclass 得到的是void,而c.getclass得到的是...

詳解scala中flatmap和map的區別

flatmap函式有一般的功能和map函式函式一樣,就是經過map函式之後多了乙個扁平化的過程。不過有個要求,傳入的函式在處理完後返回值必須是list 或seq 如果結果不是list seq 那麼將出錯。也就是說,傳入的函式是有要求的 返回值是seq才行。這樣,每個元素處理後返回乙個list,我們得...