stream是一个集合.这个集合,可以用于存放,无穷多的元素,但是这个无穷个元素并不会一次性生产出来,而是需要用到多大区间,就会动态的生成,末尾元素遵循lazy规则

    1. 使用#::得到一个stream
    1. def numsForm(n: BigInt): Stream[BigInt] = n #:: numsForm(n+1)
    1. 传递一个值,并打印stream集合
    1. val tenOrMore = numsForm(10)
    2. println(tenOrMore)

    输出

    1. Stream(10, ?)

    ?表示待生成

    1. tail的每一次使用,都会动态的向stream集合按照规则生成新的元素
      tail表示除了第一个元素的其他元素
    1. println(tenOrMore.tail)
    2. println(tenOrMore)

    输出

    1. Stream(11, ?)
    2. Stream(10, 11, ?)
    1. stream会不断生成,后面的会影响前面
    1. def numsForm(initNum: BigInt): Stream[BigInt] = {
    2. initNum #:: numsForm(initNum + 1)
    3. }
    4. val numStream = numsForm(0)
    5. val s1 = numStream.tail
    6. val s2 = s1.tail
    7. println(s1)
    8. println(s2)

    输出

    1. Stream(1, 2, ?)
    2. Stream(2, ?)