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