Scala 中的foreach和map方法比较
2015-08-07 13:52
127 查看
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用于映射(转换)集合到另一个集合。
运行结果:
问题:为什么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+" ")) }
运行结果:
相关文章推荐
- 主页被篡改的问题
- Delete Product from Cart Programmatically in Magento
- ZZUACM 2015 暑假集训 round 02
- 【python网络编程】多线程实现多用户全双工聊天
- 判断当前viewcontroller是push还是present的方式显示的
- 阿里云yum源
- unbunt安装wingide5_5.1.5
- 动画按钮
- JDBC的工作原理
- Mysql 字符集研究
- hdu 1134 大数模板
- Qt学习笔记(二)——qt空文档项目
- Java 多线程编程两个简单的例子
- [转发]Gulp开发教程(翻译)
- mk2fs
- 设置activity为手机屏幕宽和高的方法
- MongoDB导出、备份、恢复
- /*+APPEND*/插入性能总结
- iOS的截屏,图片截取以及pixel,point,scale的研究
- 初识UML