Extensions can add focused helper methods to standard-library numeric types.

Add a number helper

base
numeric_extensions.swift
Replay: real traced execution (multi-file project)
extension Int {
    func squared() -> Int {
        return self * self
    }
}

let base = 6
let result = base.squared()
let message = "square=\(result)"

print(message)
extension Int {
    func squared() -> Int {
        return self * self
    }
}

let base = 3
let result = base.squared()
let message = "square=\(result)"

print(message)
extension Int {
    func squared() -> Int {
        return self * self
    }
}

let base = 9
let result = base.squared()
let message = "square=\(result)"

print(message)
  1. base ← 6

    7let base→ 6 = 6  //@base=3, 98let result = base6.squared()9let message = "square=\(result)"
  2. result ← 36, message ← square=36

    7let base = 6  //@base=3, 98let result→ 36 = base6.squared()9let message→ square=36 = "square=\(result36)"1011print(messagesquare=36)
    outputsquare=36
  1. base ← 3

    7let base→ 3 = 38let result = base3.squared()9let message = "square=\(result)"
  2. result ← 9, message ← square=9

    7let base = 38let result→ 9 = base3.squared()9let message→ square=9 = "square=\(result9)"1011print(messagesquare=9)
    outputsquare=9
  1. base ← 9

    7let base→ 9 = 98let result = base9.squared()9let message = "square=\(result)"
  2. result ← 81, message ← square=81

    7let base = 98let result→ 81 = base9.squared()9let message→ square=81 = "square=\(result81)"1011print(messagesquare=81)
    outputsquare=81
standard type extension Extending a standard type keeps small domain helpers close to the type they operate on.