目录
一、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中除了第一个元素的所有元素,但是得到的结果只有第二个值被求值了。