Scala 中的foreach和map方法比較

2021-08-14 15:33:53 字數 933 閱讀 7792

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

1 object arraytest extends

2 var increase=(x:int)=>x+1

3 val somenumbers = list ( -11, -10, - 5, 0, 5, 10)

4 var b =somenumbers.foreach(increase)

5println(b.getclass)

6 var c =somenumbers.map(increase)

7println(c.getclass)

89 c.foreach((x:int)=>print(x+" "))

10println()

11 c.map((x:int)=>print(x+" "))

1213 }

執行結果:

scala中map和foreach的區別

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

Scala 中的foreach和map方法比較

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

C 中for和foreach迴圈的效能

大家先來看看如下三個迴圈 int foo new int 100 1,foreach int i in foo console.writeline i.tostring 複製 2,for int index 0 index console.writeline foo index tostring 複...