Skip to content

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.0

mutating 方法

结构体是 值类型,默认方法不能修改属性。需要 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 方法:修改结构体/枚举。
  • 静态属性/方法:属于类型。

本站总访问