Swift: 为什么不能让lazy, computed 属性, and 属性 observer

Swift: why lazy, computed property, and property observer can not be let

我一直在寻找为什么惰性、计算 属性 和 属性 观察者不能(让)常量,我知道例如惰性在被访问之前不会被分配,但是为什么它不能是 (let),这是否意味着 lazy 在被访问并分配给我们分配的值之前将持有一个 nil 值或任何值?请为计算 属性 和 属性 观察者解释同样的事情。

惰性属性:您必须始终将惰性 属性 声明为变量(使用 var 关键字),因为它的初始值可能要到实例之后才能检索初始化完成。常量属性在初始化完成之前必须始终有一个值,因此不能声明为惰性。

computed 属性 :而计算属性计算(而不是存储)一个值。相反,它们提供了一个 getter 和一个可选的 setter 来间接检索和设置其他属性和值。

属性 observer : 属性 observers 就是监听一个属性的值的变化,如果你定义它让那么如何您可以监视更改,因为 let 是一种常量,您在初始化后无法更改。

规则:-

  1. 您可以使用 letvar 关键字声明 属性。
  2. 在 swift 中,必须先初始化 let 变量,然后才能初始化 let 变量的所有者。
  3. 一旦为 let 变量赋值,就不能再更改它的值。

现在让我们一一看看这三种属性:-

  1. 惰性变量 - 它在所有者初始化后初始化。所以,这里违反了规则 2。
  2. 计算变量 - 无论何时访问计算变量,它都会 returns 某些 calculation/operation 之后的值。所以,这里违反了规则 3。
  3. 属性 观察者 - 属性 观察者的 didSetwillSet 在您更改其值时被调用。所以,这里违反了规则 3。