32.scala编程思想笔记——map和reduce

32.scala编程思想笔记——map和reduce

欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50445777
源码下载连接请见第一篇笔记。

Map接受参数,一个接受单个参数并产生返回值的函数,并将其应用于序列中的每个元素。

与foreach 相似,但是map可以捕获每次调用时的返回值,并将其存储到一个以map作为返回值而产生的新序列中。

例如,对Vector中每个元素都加1的例子:

import com.atomicscala.AtomicTest._

 

val v = Vector(1, 2, 3, 4)

v.map(n => n + 1) is Vector(2, 3, 4, 5)

输出如下:

Vector(2, 3, 4, 5)

 

如果需要将序列中所有值加起来的方式:

例如:

import com.atomicscala.AtomicTest._

 

val v = Vector(1, 10 , 100, 1000)

var sum = 0

v.foreach(x => sum += x)

sum is 1111

输出如下:

1111

实现来起来虽然也不错,但是用reduce更好。

Reduce使用参数,来组合序列中所有元素,产生更加整洁的序列求和方式:

import com.atomicscala.AtomicTest._

 

val v = Vector(1, 10, 100, 1000)

v.reduce((sum, n) => sum + n) is 1111

输出如下:

1111

Reduce可以再序列上执行所有种类的操作。并未限制其只能作用于Int或者只能做加法。

例如:

import com.atomicscala.AtomicTest._

 

(1 to 100).reduce((sum, n) => sum + n) is

  5050

val v2 = Vector("D", "u","c", "k")

v2.reduce((sum, n) => sum + n) is "Duck"

         注意:map和reduce的作用相当于正常情况下手写的迭代代码。

         函数式编程的重要标志之一就是map,reduce,foreach。

         当然可以自己编写这样的代码,但是直接使用这些代码可以创建更健壮的代码。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值