Swift编程:协议实现、关键路径、动态成员查找与内存管理
一、合成协议实现
(一)Equatable协议
从Swift 4.1开始,Swift标准库中的一些协议具备了自动合成协议要求实现的能力。Equatable协议就是其中之一,让自定义类型采用Equatable协议是很有用的,因为采用该协议后,就可以使用 == 运算符来检查该类型的两个实例是否相等。
1. 手动实现 == 运算符
以 Vial 结构体为例,手动实现 == 运算符的代码如下:
struct Vial {
var numberOfBacteria : Int
init(_ n:Int) {
self.numberOfBacteria = n
}
}
extension Vial : Equatable {
static func ==(lhs:Vial, rhs:Vial) -> Bool {
return lhs.numberOfBacteria == rhs.numberOfBacteria
}
}
采用Equatable协议后,不仅可以使用 == 进行比较,还能使用一些需要Equatable参数的方法,如 firstIndex(of:) 。而且,互补的不等式运算符 != 也会自动可
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



