Swift 属性

· 约 6 分钟读完 · 第 24 / 36 章

属性为类、结构体、枚举或它们的实例提供了功能。属性可以存储值、计算值,也可以观察和响应变化。在本章中,我们将详细介绍Swift中的各种属性类型及其使用方法。

存储属性

存储属性是存储在实例中的常量或变量。它们可以在定义时初始化,也可以在实例初始化过程中进行设置。

定义存储属性

在这个例子中,Point 结构体有两个存储属性 x 和 y,它们都是 Double 类型,并且默认值为 0.0。

修改存储属性

你可以通过实例来修改存储属性的值。

只读存储属性

只读存储属性只能在初始化过程中设置,并且之后不能更改。

计算属性

计算属性不直接存储值,而是提供一个getter和setter来间接获取和设置其他属性或变量的值。

定义计算属性

在这个例子中,Rectangle 结构体有一个计算属性 area,它返回 width 和 height 的乘积。

带有 setter 的计算属性

计算属性可以包含一个可选的 setter,用于设置计算属性的新值。

在这个例子中,Square 结构体有一个计算属性 perimeter,它可以根据 sideLength 计算出来,同时也可以通过 perimeter 设置新的 sideLength。

属性观察器

属性观察器允许你在属性值改变时执行代码。Swift 提供了 willSet 和 didSet 来实现这一功能。

定义属性观察器

在这个例子中,Temperature 类有一个存储属性 celsius,它使用 willSet 和 didSet 观察器来监控其值的变化。

属性方法

属性方法是定义在类型上的函数,用于访问或修改该类型的属性。

定义属性方法

在这个例子中,Circle 结构体有一个存储属性 radius 和一个计算圆周长的方法 circumference。

属性包装

属性包装是一种机制,允许你在属性的 getter 和 setter 中插入自定义行为。

使用属性包装

在这个例子中,PositiveNumber 是一个属性包装器,它确保被包装的值始终是非负的。Person 结构体使用这个属性包装器来定义 age 属性。

以上就是关于 Swift 属性的详细介绍。通过这些知识,你可以更灵活地管理和操作你的数据。