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 是一种常量,您在初始化后无法更改。
规则:-
- 您可以使用
let
或 var
关键字声明 属性。
- 在 swift 中,必须先初始化
let
变量,然后才能初始化 let
变量的所有者。
- 一旦为
let
变量赋值,就不能再更改它的值。
现在让我们一一看看这三种属性:-
- 惰性变量 - 它在所有者初始化后初始化。所以,这里违反了规则 2。
- 计算变量 - 无论何时访问计算变量,它都会 returns 某些 calculation/operation 之后的值。所以,这里违反了规则 3。
- 属性 观察者 - 属性 观察者的
didSet
或 willSet
在您更改其值时被调用。所以,这里违反了规则 3。
我一直在寻找为什么惰性、计算 属性 和 属性 观察者不能(让)常量,我知道例如惰性在被访问之前不会被分配,但是为什么它不能是 (let),这是否意味着 lazy 在被访问并分配给我们分配的值之前将持有一个 nil 值或任何值?请为计算 属性 和 属性 观察者解释同样的事情。
惰性属性:您必须始终将惰性 属性 声明为变量(使用 var 关键字),因为它的初始值可能要到实例之后才能检索初始化完成。常量属性在初始化完成之前必须始终有一个值,因此不能声明为惰性。
computed 属性 :而计算属性计算(而不是存储)一个值。相反,它们提供了一个 getter 和一个可选的 setter 来间接检索和设置其他属性和值。
属性 observer : 属性 observers 就是监听一个属性的值的变化,如果你定义它让那么如何您可以监视更改,因为 let 是一种常量,您在初始化后无法更改。
规则:-
- 您可以使用
let
或var
关键字声明 属性。 - 在 swift 中,必须先初始化
let
变量,然后才能初始化let
变量的所有者。 - 一旦为
let
变量赋值,就不能再更改它的值。
现在让我们一一看看这三种属性:-
- 惰性变量 - 它在所有者初始化后初始化。所以,这里违反了规则 2。
- 计算变量 - 无论何时访问计算变量,它都会 returns 某些 calculation/operation 之后的值。所以,这里违反了规则 3。
- 属性 观察者 - 属性 观察者的
didSet
或willSet
在您更改其值时被调用。所以,这里违反了规则 3。