读书人

lazy value可以在亟需的时候重新计算值

发布时间: 2012-09-24 13:49:41 作者: rapoo

lazy value可以在需要的时候重新计算值,但不是重新赋值。

它可以起到var的部分作用,但又不可以被程序员手工重新赋值。


int x = 0;

lazy val value = 1/x

try{ println(value) }

catch{

case _ => x = 1

println(value)

}

可以在catch块中正确输出1,因为这时value重新计算为1/1.

但是重新计算只能发生在异常时的异常处理中:

var x = 1;
lazy val value = 10 / x
for (x <- 1 to 10) {
println(value)
}

这个就不会重新计算value的值,只会连续输出10.

读书人网 >编程

热点推荐