加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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循环中总结集合的元素?你不会.相反,你需要编写一个递归函数.所以,为了好的衡量,最好放弃早期思考循环的习惯,享受勇敢的新功能性做事方式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读