首页 文章

改变Scala懒惰的行为

提问于
浏览
0

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

Class LazyVals { 

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

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

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

1 回答

  • 3

    计算 message 的代码仅评估一次 . 您无法更改此行为 .

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

相关问题