stream是一个集合.这个集合,可以用于存放,无穷多的元素,但是这个无穷个元素并不会一次性生产出来,而是需要用到多大区间,就会动态的生成,末尾元素遵循lazy规则
- 使用
#::
得到一个stream
def numsForm(n: BigInt): Stream[BigInt] = n #:: numsForm(n+1)
- 传递一个值,并打印stream集合
val tenOrMore = numsForm(10)
println(tenOrMore)
输出
Stream(10, ?)
?表示待生成
- tail的每一次使用,都会动态的向stream集合按照规则生成新的元素
tail表示除了第一个元素的其他元素
println(tenOrMore.tail)
println(tenOrMore)
输出
Stream(11, ?)
Stream(10, 11, ?)
- stream会不断生成,后面的会影响前面
def numsForm(initNum: BigInt): Stream[BigInt] = {
initNum #:: numsForm(initNum + 1)
}
val numStream = numsForm(0)
val s1 = numStream.tail
val s2 = s1.tail
println(s1)
println(s2)
输出
Stream(1, 2, ?)
Stream(2, ?)