Inheritance - Equatable
Conforming Types - Numeric
public protocol AdditiveArithmetic : Equatable {
static var zero: Self { get }
static func + (lhs: Self, rhs: Self) -> Self
static func += (lhs: inout Self, rhs: Self)
static func - (lhs: Self, rhs: Self) -> Self
static func -= (lhs: inout Self, rhs: Self)
}
這個(gè)協(xié)議比較好理解吗铐, 遵守此協(xié)議則可以支持基礎(chǔ)運(yùn)算符园骆。
看到一個(gè)很棒的例子耳幢。 協(xié)議配合條件篩選
extension Sequence where Element: AdditiveArithmetic {
func sum() -> Element {
return reduce(.zero, +)
}
}
let sum = [1, 2, 3, 4].sum()
print(sum)
10
精彩在于 Sequence 類(lèi)型的數(shù)據(jù)(例: 數(shù)組)今野, 內(nèi)部都是支持 AdditiveArithmetic 類(lèi)型的數(shù)據(jù)(例: int 哼绑、double),則可以調(diào)用此方法, 其他數(shù)組則不可以。