Computed properties in Swift
Derived on read, observed on write.
struct Leg {
var distanceNm: Double
var hours: Double
// Computed from the stored properties on every read.
var speedKts: Double { distanceNm / hours }
// didSet observes writes to a stored property.
var protests = 0 {
didSet { print("Protest count now \(protests)") }
}
}
var beat = Leg(distanceNm: 4.2, hours: 0.75)
print("Averaging \(beat.speedKts) kts")
beat.protests = 1
beat.distanceNm = 5.0
print("Recomputed: \(beat.speedKts) kts")
How it works
var speedKts: Double { ... }recomputes from stored state.didSetruns after every write toprotests.- Changing
distanceNmchanges the nextspeedKtsread.
Keywords and builtins used here
DoubleLegdidSetprintstructvar
The run, in numbers
- Lines
- 18
- Characters to type
- 442
- Tokens
- 90
- Three-star pace
- 65 tpm
At the three-star pace of 65 tokens a minute, this run takes about 83 seconds.
Step 3 of 3 in Structs & classes, step 18 of 27 in Language basics.