stream是一个集合。这个集合,可以用于存放,无穷多个元素,但是这无穷个元素并不会一次性生产出来,而是需要用到多大的区间,就会动态的生产,末尾元素遵循lazy规则。
Java 中 打印1 到 100 个数组,需要先创建出来,再遍历,Scala不需要,给它一个规则,当使用的时候,在按照规则生成即可,不占用内存,不占用资源
1、使用#::得到一个stream
def numsStream(n:Int): Stream[Int] ={
n #:: numsStream(n + 1)
}
2、传递一个值,并打印stream集合
val stream1 = numsStream(10)
// val 默认不可变, stream1.tail 产生一个新的集合
//tail 除第一个元素外,返回其他元素
println(stream1)
println(stream1.tail)
println(stream1.tail)
println(stream1.tail.tail)
println(stream1.tail)
val stream1 = numStream(10)
println(stream1)
println(stream1.tail)
println(stream1)
println(stream1.tail.tail)
println(stream1)
3、tail的使用
tail的每一次使用,都会动态的向stream集合按照规则生成新的元素
println(tenOrMore.tail)
println(tenOrMore.tail.tail)
println(tenOrMore)
4、使用map映射stream的元素并进行一些计算
val stream_map1 = numStream(3).map(x => x * x)
println(stream_map1)
val stream_map2 = numStream(3).map(x => x * x).tail
println(stream_map2)
val stream_map3 = numStream(3).tail.map(x => x * x)
println(stream_map3)