🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
stream是一个集合.这个集合,可以用于存放,无穷多的元素,但是这个无穷个元素并不会一次性生产出来,而是需要用到多大区间,就会动态的生成,末尾元素遵循lazy规则 1. 使用`#::`得到一个stream ~~~ def numsForm(n: BigInt): Stream[BigInt] = n #:: numsForm(n+1) ~~~ 2. 传递一个值,并打印stream集合 ~~~ val tenOrMore = numsForm(10) println(tenOrMore) ~~~ 输出 ~~~ Stream(10, ?) ~~~ ?表示待生成 3. tail的每一次使用,都会动态的向stream集合按照规则生成新的元素 tail表示除了第一个元素的其他元素 ~~~ println(tenOrMore.tail) println(tenOrMore) ~~~ 输出 ~~~ Stream(11, ?) Stream(10, 11, ?) ~~~ 4. 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, ?) ~~~