scala中map和foreach的区别
2016-09-08 16:03
489 查看
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用于映射(转换)集合到另一个集合。
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+" "))
}
问题:为什么scala提供foreach和map两个方法呢?本人看法是scala做为一种支持函数式编程范式的语言,必然要引入一种机制以支持数学中函数概念,而在数学中函数就是映射,所以scala中有map方法一点都不奇怪。而foreach只是用在不需要对集合执行映射操作,但需要遍历集合时才用到。总而言之,foreach用于遍历集合,而map用于映射(转换)集合到另一个集合。
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+" "))
}
相关文章推荐
- Scala中的foreach forall exists map函数及其区别
- Scala 中的foreach和map方法比较
- List的map、flatMap、foreach、filter操作代码实战之Scala学习笔记-27
- js数组中forEach,map,filter的区别
- JS中some(),every(),forEach(),map(),filter()区别
- JS中的forEach、$.each、map的区别
- (map和foreach的区别)Erlang编程入门之高端函数
- JS中some(),every(),forEach(),map(),filter()区别
- forEach和map的用法和区别
- map, foreach, for的用法区别
- forEach和map和for方法的区别
- Scala深入浅出实战经典:35,List的map、flatMap、foreach、filter操作代码实战
- 如何形象地解释 JavaScript 中 map、foreach、reduce 间的区别?
- scala-35:List的map、flatMap、foreach、filter操作代码实战
- js map()与forEach()遍历的区别
- scala学习之:List的map、flatMap、foreach、filter的操作代码实战
- Scala学习笔记23【List 的map、flatMap、foreach、filter操作实战】
- JS中some(),every(),forEach(),map(),filter()区别
- JS的forEach和map方法的区别,还有一个$.each
- forEach()和map()的区别: