zoukankan      html  css  js  c++  java
  • 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 }


    运行结果:

  • 相关阅读:
    P3371 【模板】单源最短路径(弱化版)
    村村通
    P1551 亲戚题解
    P4467 [SCOI2007]k短路
    P2483 【模板】k短路([SDOI2010]魔法猪学院)
    POJ——2449 Remmarguts' Date
    P1337 [JSOI2004]平衡点 / 吊打XXX
    P1118 [USACO06FEB]数字三角形`Backward Digit Su`…
    P1621 集合
    P1514 引水入城
  • 原文地址:https://www.cnblogs.com/1zhk/p/4710580.html
Copyright © 2011-2022 走看看