存储属性(Stored Properties)
存储属性是在类或结构体中存储常量或变量的地方。它可以是变量存储属性(用 var 定义)或常量存储属性(用 let 定义)。
struct Rectangle {
var width: Double
var height: Double
}
var rect = Rectangle(width: 10.0, height: 5.0)
print(rect.width) // 输出 10.0
rect.width = 15.0
print(rect.width) // 输出 15.0
计算属性(Computed Properties)
计算属性用于计算一个值,而不是存储它。计算属性可以用于类、结构体和枚举。
struct Circle {
var radius: Double
// 计算属性
var diameter: Double {
get {
return radius * 2
}
set {
radius = newValue / 2
}
}
}
var circle = Circle(radius: 5.0)
print(circle.diameter) // 输出 10.0
circle.diameter = 20.0
print(circle.radius) // 输出 10.0
属性观察器(Property Observers)
属性观察器用于在属性值发生改变前后执行代码。属性观察器包括 willSet 和 didSet。
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 = 100
// 输出:
// About to set totalSteps to 100
// Added 100 steps
延迟存储属性(Lazy Stored Properties)
延迟存储属性是指在第一次被调用时才会计算其初始值的属性。使用 lazy 关键字定义。
class DataManager {
lazy var fileManager: FileManager = {
let fm = FileManager()
// 配置 FileManager
return fm
}()
}
let dataManager = DataManager()
// fileManager 还未被创建
print(dataManager.fileManager)
// fileManager 被创建
只读属性(Read-Only Properties)
只读属性只能获取值,不能修改。它们用于计算值或在初始化之后设置值而不允许更改。
struct Circle {
var radius: Double
// 只读计算属性
var area: Double {
return Double.pi * radius * radius
}
}
var circle = Circle(radius: 3.0)
print(circle.area) // 输出 28.274333882308138
以上是一些关于 Swift 属性的基本用法。属性是 Swift 中存储和访问值的重要机制,它们可以用于实现类、结构体和枚举中的各种功能。
转载请注明出处:http://www.zyzy.cn/article/detail/14429/Swift