我知道((A & B) & C) & D
并且只有在调用代码时才会对代码进行评估,但我无法理解lazy和var的某些内容。
我正在使用的Scala版本:Scala 2.12.0
它表示只允许使用值定义进行延迟。我在这里有点困惑,scala中的一切都不值得吗?和var只是一个关键词,它与该类型有什么关系。
答案 0 :(得分:3)
首先,一些术语:
val
用于定义"值定义" - 评估一次的定义。 var
定义变量,可在首次分配值后进行更改。val
而不是var
可以跟随lazy
关键词。 为什么Scala不支持lazy var
?
我猜测将var
标记为懒惰不会很好地定义:懒惰地评估什么 - 仅限第一个作业?每一项任务?并且重新分配是否会计入先前作业的触发器?可能还存在一些实现问题(例如,我们如何确保在计算先前值时未分配变量?)。