Scala中的集合对象都有fireach和map量方法。
**相同:**都属于遍历集合对象,并对每一项执行指定的方法。
**相异:**foreach无返回值(准确的说返回void),map返回集合对象。
下列代码中,b.getClass得到的是void,而c.getClass得到的是colletion。,foreach和map运行结果一致。
结论就是:foreach无法代替map而map方法可以代替foreach。
问题:为什么Scala提供foreach和map两种方法呢?本人看法Scala作为一种支持函数式编程范式的语言,必然要引入一种jizhi以支持数学中的函数概念,在数学函数中函数就是映射,所以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 = someNumbrs.foreach(increase)
println(b.getClass)
var c = someBumbers.map(increase)
println(c.getClass)
c.foreach((x:Int)=>print(x+" "))
println()
c.map((x:Int)=>print(x+"