Conditional Extensions in Swift

From the Swift cheat sheet · Extensions · verified Jul 2026

Conditional Extensions

Extensions with generic constraints

swift
// Extension with constraints
extension Array where Element: Numeric {
    func sum() -> Element {
        return reduce(0, +)
    }

    func average() -> Double {
        return isEmpty ? 0 : Double(sum() as! NSNumber) / Double(count)
    }
}

[1, 2, 3, 4, 5].sum()  // 15
[1.5, 2.5, 3.5].sum()  // 7.5

// Protocol extension with constraints
extension Collection where Element: Equatable {
    func allEqual() -> Bool {
        guard let first = first else { return true }
        return allSatisfy { $0 == first }
    }
}
💡 Generic where clauses enable powerful conditional extensions
⚡ Protocol extensions provide default implementations
📌 Conditional conformance adds protocol only when constraints are met
🟢 Use constraints to add methods only to specific generic types

Continue with Swift

Save the full cheat sheet or work through every related task.

More Swift tasks

Back to the full Swift cheat sheet