假设我有一个String类型lazy val:
Class LazyVals { lazy val message = "I am lazy on + " + System.currentTimeMillis().toString def changeLazy = { message + " Not!!" } }
changeLazy会改变消息的“仅评估一次”性质吗?
计算 message 的代码仅评估一次 . 您无法更改此行为 .
message
currentTimeMillis 只会被调用一次 . 将在每个具有相同结果的 changeLazy 调用上执行连接 message + " Not!!" ,但可以通过 jvm 进行优化 .
currentTimeMillis
changeLazy
message + " Not!!"
jvm
1 回答
计算
message
的代码仅评估一次 . 您无法更改此行为 .currentTimeMillis
只会被调用一次 . 将在每个具有相同结果的changeLazy
调用上执行连接message + " Not!!"
,但可以通过jvm
进行优化 .