Conditional Conformance
Conform generically only when constraints are met.
What Is Conditional Conformance?
Conditional conformance makes a generic type conform to a protocol only when its type parameters satisfy certain constraints. The classic example: an Array is Equatable only if its Element is Equatable.
extension Array where Element: Equatable {
func allEqual(to x: Element) -> Bool {
allSatisfy { $0 == x }
}
}Built-In Example
The standard library already uses this: [Int] is Equatable because Int is. Two arrays compare equal element-by-element.
let a = [1, 2, 3]
let b = [1, 2, 3]
print(a == b)All lessons in this course
- Protocols as Contracts
- Default Implementations in Extensions
- Protocol Composition
- Conditional Conformance