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