Swift计算属性

示例

与存储的属性不同,计算的属性是使用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
}