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.tailval s2 = s1.tailprintln(s1)println(s2)
输出
Stream(1, 2, ?)Stream(2, ?)
