存储属性
struct FixedLengthRange { var firstValue: Int let length: Int}var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3)// 该区间表示整数0,1,2rangeOfThreeItems.firstValue = 6// 该区间现在表示整数6,7,8复制代码
常量结构体的存储属性
let rangeOfFourItems = FixedLengthRange(firstValue: 0, length: 4)// 该区间表示整数0,1,2,3rangeOfFourItems.firstValue = 6// 尽管 firstValue 是个变量属性,这里还是会报错复制代码
属性观察器
- willSet 在新的值被设置之前调用
- didSet 在新的值被设置之后立即调用
willSet 观察器会将新的属性值作为常量参数传入,在 willSet 的实现代码中可以为这个参数指定一个名称,如果不指定则参数仍然可用,这时使用默认名称 newValue 表示。
同样,didSet 观察器会将旧的属性值作为参数传入,可以为该参数命名或者使用默认参数名 oldValue。如果在 didSet 方法中再次对该属性赋值,那么新值会覆盖旧的值。