改变Scala懒惰的行为

时间:2013-08-08 09:09:11

标签: scala lazy-evaluation

假设我有一个String类型lazy val:

    Class LazyVals { 

     lazy val message = "I am lazy on + " + System.currentTimeMillis().toString    

     def changeLazy = { message + " Not!!" }
    }

changeLazy会改变消息的“仅评估一次”性质吗?

1 个答案:

答案 0 :(得分:3)

计算message的代码只会被评估一次。你无法改变这种行为。

currentTimeMillis只会被调用一次。将在每个message + " Not!!"调用上执行连接changeLazy,但结果相同,但可以jvm进行优化。