Scala 中的foreach和map方法比較


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 App{
 2   var increase=(x:Int)=>x+1
 3   val someNumbers = List ( -11, -10, - 5, 0, 5, 10)
 4   var b = someNumbers.foreach(increase)
 5   println(b.getClass)
 6   var c = someNumbers.map(increase)
 7   println(c.getClass)
 8 
 9   c.foreach((x:Int)=>print(x+" "))
10   println()
11   c.map((x:Int)=>print(x+" "))
12 
13 }


運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM