<aside> 🥥 Swift 语言中结构体、枚举和类都可定义方法。

</aside>

实例方法

在实例方法中修改值类型

struct Point {
    var x = 0.0, y = 0.0
    mutating func moveBy(x deltaX: Double, y deltaY: Double) {
        x += deltaX
        y += deltaY
    }
}
var somePoint = Point(x: 1.0, y: 1.0)
somePoint.moveBy(x: 2.0, y: 3.0)
print("The point is now at (\\(somePoint.x), \\(somePoint.y))")
// 打印“The point is now at (3.0, 4.0)”

在可变方法中给 self 赋值

struct Point {
    var x = 0.0, y = 0.0
    mutating func moveBy(x deltaX: Double, y deltaY: Double) {
        self = Point(x: x + deltaX, y: y + deltaY)
    }
}

enum TriStateSwitch {
    case off, low, high
    mutating func next() {
        switch self {
        case .off:
            self = .low
        case .low:
            self = .high
        case .high:
            self = .off
        }
    }
}
var ovenLight = TriStateSwitch.low
ovenLight.next()
// ovenLight 现在等于 .high
ovenLight.next()
// ovenLight 现在等于 .off

类型方法

<aside> 🍤 类型方法是在方法 func 前添加 static 关键字。 类的类型方法可以使用 class 表示类型方法,此时,子类可以重写该方法。

</aside>

<aside> 🐶 Swift 中,类型、枚举和结构体都可添加类型方法。

</aside>