Equatable
可以進(jìn)行值相等比較的類型。
protocol Equatable
比較兩個(gè)類是否相等
class StreetAddress {
let number: String
let street: String
let unit: String?
init(_ number: String, _ street: String, unit: String? = nil) {
self.number = number
self.street = street
self.unit = unit
}
}
extension StreetAddress: Equatable {
static func == (lhs: StreetAddress, rhs: StreetAddress) -> Bool {
return
lhs.number == rhs.number &&
lhs.street == rhs.street &&
lhs.unit == rhs.unit
}
}
對(duì)于結(jié)構(gòu),其所有存儲(chǔ)的屬性都必須符合Equatable。
對(duì)于枚舉寝殴,其所有關(guān)聯(lián)值都必須符合Equatable。
基本數(shù)據(jù)類型是都符合Equatable的,因此多個(gè)類時(shí)需要都實(shí)現(xiàn)Equatable明垢。
class StreeAddress{
let number : String
let street : String
let unit : String?
let demo : Demo
init(_ number : String , _ street : String , _ name : String, _ unit : String? = nil) {
self.number = number
self.street = street
self.unit = unit
self.demo = Demo(name)
}
}
class Demo{
let name : String
init(_ name : String = "名字") {
self.name = name
}
}
extension StreeAddress : Equatable{
static func == (lhs: StreeAddress, rhs: StreeAddress) -> Bool {
return
lhs.number == rhs.number &&
lhs.street == rhs.street &&
lhs.unit == rhs.unit &&
lhs.demo == rhs.demo
}
}
extension Demo : Equatable{
static func == (lhs: Demo, rhs: Demo) -> Bool {
return lhs.name == rhs.name
}
}