Scala reduceLeft与foldLeft、Range和Stream

目录

一、reduceLeft和foldLeft的基本解释

reduceLeft表达式: 

foldLeft表达式:

二、reduceLeft和foldLeft的实例应用

三、Range

定义Range

生成Range

四、Stream

定义Stream

生成Stream

访问Stream元素

 


一、reduceLeft和foldLeft的基本解释

reduceLeft表达式: 

reduceLeft(op : (x, y) => x op y)

foldLeft表达式:

foldLeft(z :u )((x,y) => x op y)

 

以上图片中的“flodLeft”应该为“foldLeft”

二、reduceLeft和foldLeft的实例应用

 

reduceLeft表达式还可以用通配符代替。

reduceLeft(_ op _)

 

foldLeft表达式可以用通配符代替。

foldLeft(z :u)(_ op _)

 

 

三、Range

定义Range

range是一个整数序列。

 

生成Range

第一种:

默认步进是1,生成Range(1,2,3,4,5,6,7,8,9,10)。

 

第二种:

改变默认步进是2 ,生成Range(1,3,5,7,9)。

 

第三种:

将Range生成的元素转换成List。

 

第四种:

生成Range(1,2,3,4,5,6,7,8,9)。

发现to生成的Range是左闭右闭区间,用until生成的Range是左闭右开区间。

 

四、Stream

定义Stream

Stream是一个lazy List(惰性求值的列表)

 

生成Stream

看到生成res34: scala.collection.immutable.Stream[Int] = Stream(1, <not computed>),发现Stream第一个元素的值是确定了被求值了的,但是其他的元素只有在被用到的时候才会被进行求值。这就是把Stream定义为lazy的原因。

这种按需求值的lazy STream可以高效的进行程序运算和节约内存。

 

访问Stream元素

对于元素过多的Stream

head:访问Stream的第一个元素。

tail:访问Stream中除了第一个元素的所有元素,但是得到的结果只有第二个值被求值了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值