計算屬性

與儲存的屬性不同,計算屬性是使用 getter 和 setter 構建的,在訪問和設定時執行必要的程式碼。計算屬性必須定義型別:

var pi = 3.14

class Circle {
    var radius = 0.0
    var circumference: Double {
        get {
            return pi * radius * 2
        }
        set {
            radius = newValue / pi / 2
        }
    }
}

let circle = Circle()
circle.radius = 1
print(circle.circumference) // Prints "6.28"
circle.circumference = 14
print(circle.radius) // Prints "2.229..."

仍然使用 var 宣告只讀計算屬性:

var circumference: Double {
    get {
        return pi * radius * 2
    }
}

可以縮短只讀計算屬性以排除 get

var circumference: Double {
    return pi * radius * 2
}