Extensions
Constrained Extensions
Generic types can gain methods only when their type arguments meet a constraint.
Add behavior for one element type
constrained_extensions.swift
extension Array where Element == Int {
func total() -> Int {
var sum = 0
for value in self {
sum += value
}
return sum
}
}
let bonus =
let scores = [2, 4, bonus]
let total = scores.total()
let message = "total=\(total)"
print(message)
extension Array where Element == Int {
func total() -> Int {
var sum = 0
for value in self {
sum += value
}
return sum
}
}
let bonus =
let scores = [2, 4, bonus]
let total = scores.total()
let message = "total=\(total)"
print(message)
extension Array where Element == Int {
func total() -> Int {
var sum = 0
for value in self {
sum += value
}
return sum
}
}
let bonus =
let scores = [2, 4, bonus]
let total = scores.total()
let message = "total=\(total)"
print(message)
constrained extension
A constrained extension keeps specialized behavior available only for matching generic instantiations.