How to create a Computed property in Swift
What is a computed property
Classes, Structures and Enums may define a computed property.
It is a property that does not store value, instead it defines getter and setter to retrieve and set other properties and values indirectly.
The setter is optional, if you define a getter only then this computed property will be read-only.
How to define a computed property
Lets see how to define and use a computed property by example
struct Time { var seconds: Double = 0.0 var minutes: Double { get { return seconds / 60.0 } set { self.seconds = newValue * 60.0 } } init(seconds: Double) { self.seconds = seconds } }
That was a struct that contain one stored property- seconds- and one computed property – minutes- which is computed by dividing seconds by 60.
In the setter you notice that we used a newValue name, this is the default name for the new value if you didn’t specify one. Lets see how to use our computed property in code
var time = Time(seconds: 150.0) print("seconds: \(time.seconds)") print("minutes: \(time.minutes)") time.minutes = 5 print("seconds: \(time.seconds)")
Result
seconds: 150.0 minutes: 2.5 seconds: 300.0
First we created a Time variable with 150 seconds When we printed the minutes property it was computed by dividing 150/ 60 = 2.5
When we set the minutes property to 5 the setter changes the seconds by multiplying 5 * 60 = 300