typestar

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

  1. var speedKts: Double { ... } recomputes from stored state.
  2. didSet runs after every write to protests.
  3. Changing distanceNm changes the next speedKts read.

Keywords and builtins used here

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.

Type this snippet

Step 3 of 3 in Structs & classes, step 18 of 27 in Language basics.

← Previous Next →