Appearance
Swift 入门(10):属性与方法
Swift 中,结构体和类可以有 属性(properties) 和 方法(methods),这是面向对象编程的核心。
存储属性
直接存储值在实例里的属性。
swift
struct User {
var name: String
var age: Int
}
var u = User(name: "Tom", age: 20)
u.age = 21
print(u.age) // 21计算属性
不会直接存储值,而是通过 getter/setter 计算得到。
swift
struct Rectangle {
var width: Double
var height: Double
var area: Double {
return width * height
}
}
let r = Rectangle(width: 5, height: 3)
print(r.area) // 15.0属性观察器
在属性变化时触发 willSet / didSet。
swift
class Counter {
var count: Int = 0 {
willSet {
print("即将设置为 \(newValue)")
}
didSet {
print("已从 \(oldValue) 改为 \(count)")
}
}
}
let c = Counter()
c.count = 5
// 即将设置为 5
// 已从 0 改为 5方法
方法就是定义在类/结构体中的函数。
swift
struct Circle {
var radius: Double
func area() -> Double {
return 3.14 * radius * radius
}
}
let c1 = Circle(radius: 10)
print(c1.area()) // 314.0mutating 方法
结构体是 值类型,默认方法不能修改属性。需要 mutating 关键字。
swift
struct Counter {
var value = 0
mutating func increment() {
value += 1
}
}
var ct = Counter()
ct.increment()
print(ct.value) // 1静态属性和方法
属于类型本身,而不是某个实例。
swift
struct Math {
static let pi = 3.14159
static func square(_ x: Int) -> Int {
return x * x
}
}
print(Math.pi) // 3.14159
print(Math.square(5)) // 25小结
- 存储属性:保存值。
- 计算属性:动态计算。
- 属性观察器:监听变化。
- 实例方法:作用于实例。
- mutating 方法:修改结构体/枚举。
- 静态属性/方法:属于类型。