Swift 属性
在 Swift 中,属性是类、结构体和枚举中的特征,用于存储值或提供计算值。Swift 中的属性可以分为存储属性(Stored Properties)和计算属性(Computed Properties)两种类型。
存储属性(Stored Properties)
存储属性是一种存储常量或变量作为实例的一部分的属性。它可以是变量属性(用 var
声明)或常量属性(用 let
声明)。存储属性必须有初始值,可以在初始化方法中设置,也可以在声明时设置默认值。
示例:
struct FixedLengthRange {var firstValue: Intlet length: Int
}
var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3)
rangeOfThreeItems.firstValue = 6
// rangeOfThreeItems.length = 10 // 错误:length 是一个常量属性,不能被修改
计算属性(Computed Properties)
计算属性不直接存储值,而是提供一个 getter 和一个可选的 setter,用于间接获取和设置其他属性或值。计算属性总是声明为变量属性,因为它们的值不是固定的。
示例:
struct Circle {var radius: Doublevar area: Double {return Double.pi * radius * radius}
}
let circle = Circle(radius: 3)
print(circle.area) // 输出:28.274333882308138
属性观察器(Property Observers)
属性观察器允许在属性值即将被设置或已经被设置时执行代码。属性观察器可以附加到存储属性上,但不能附加到计算属性上。
示例:
class StepCounter {var totalSteps: Int = 0 {willSet(newTotalSteps) {print("About to set totalSteps to \(newTotalSteps)")}didSet {if totalSteps > oldValue {print("Added \(totalSteps - oldValue) steps")}}}
}
let stepCounter = StepCounter()
stepCounter.totalSteps = 200
// About to set totalSteps to 200
// Added 200 steps
Swift 中的属性提供了一种灵活的方式来管理和操作实例的状态和行为。存储属性用于存储常量或变量,计算属性用于提供计算值,而属性观察器则可以用于监视属性值的变化并执行相应的代码。这些属性特性使得 Swift 中的类、结构体和枚举更加强大和灵活。