懒值,等到值被使用时才初始化,对开销较大的初始化语句或者对于会造成内存溢出的操作特别有用。迭代器,流 ,懒视图是都“懒”的操作
lazy val l = 1/0 print("111") print(l) 执行这一句才会报错
def f(n:Int):Stream[Int] = n #:: f(n+1) var a= f(0) println(a) println(a.tail) println(a.take(3).force)(强制去取个值) 结果: Stream(0, ?) Stream(1, ?) Stream(0, 1, 2)
通过view方法创建一个懒散视图,当调用v(1)时才对1计算,其他值不计算,计算的值不会缓存,如果再次调用v(1)则再次计算
也可以调用用force方法强制计算(失去懒作用)
var v= (0 to 100).view.map(_+1) println(v(1))