scala – 用于函数式编程中的vs map
发布时间:2020-12-16 09:56:50 所属栏目:安全 来源:网络整理
导读:我正在学习使用 scala进行函数式编程.一般来说,我注意到for循环在功能程序中没有太多使用,而是使用map. 问题 在性能,可读性等方面使用map for for循环有什么好处? 使用循环实现地图功能的目的是什么? 程序1:使用For循环 val num = 1 to 1000val another =
我正在学习使用
scala进行函数式编程.一般来说,我注意到for循环在功能程序中没有太多使用,而是使用map.
问题 >在性能,可读性等方面使用map for for循环有什么好处? 程序1:使用For循环 val num = 1 to 1000 val another = 1000 to 2000 for ( i <- num ) { for ( j <- another) { println(i,j) } } 计划2:使用地图 val num = 1 to 1000 val another = 1000 to 2000 val mapper = num.map(x => another.map(y => (x,y))).flatten mapper.map(x=>println(x)) 程序1和程序2都做同样的事情. 解决方法
答案其实很简单.
无论何时在集合上使用循环,它都具有语义目的.要么迭代集合的项目并打印它们.或者您希望将元素的类型转换为另一种类型(map).或者您想要更改基数,例如计算集合元素的总和(折叠). 当然,所有这些也可以使用for循环而不是代码的读者来完成,与一个众所周知的命名操作(例如map,iter,fold)相比,确定循环具有哪些语义目的更为重要.过滤器,…… 另一方面是,for循环导致使用可变状态的黑暗面.如何在没有可变状态的for循环中总结集合的元素?你不会.相反,你需要编写一个递归函数.所以,为了好的衡量,最好放弃早期思考循环的习惯,享受勇敢的新功能性做事方式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Bootstrap 面板(Panels)
- 如何应用基于ng-class设置的类的AngularJS指令?
- angularjs – 如何使用Cordova保护SPA和移动应用程序的REST
- WSDL(WebService描述语言)文件介绍
- docker-在64位主机上运行32位LXC?
- java – Rancher模板 – Hadoop主机名中的非法字符
- SHELL脚本--expr命令全解
- scala – 在Spark SQL表中分解多个列
- scala – 为什么Source.fromIterator需要将Function0 [Iter
- Startup- and Shutdown sequence of OpenOffice.org