scala的Stream流
- 转stream流
惰性数据结构
.toStream
例子
val list1: List[Int] = List(1,2,3,4,5)
val s1: Stream[Int] = list1.toStream
println(s1) //Stream(1, ?)
println(s1.head) //1
println(s1.tail.head) //2
println(s1) //Stream(1, 2, ?)
- 强制求值
语法: .force
例子
val list1: List[Int] = List(1,2,3,4,5)
val s1: Stream[Int] = list1.toStream
println(s1.force) //Stream(1, 2, 3, 4, 5)
- 添加元素
语法 : #::
例子
// 斐波那契数列 1 1 2 3 5 8 13 21 ...
def fibSeq(n: Int): List[Int] = {
def loop: Stream[Int] = 1 #:: loop.scanLeft(1)(_ + _)
loop.take(n).force.toList
}