Swift中的协议
发布时间:2020-12-14 06:41:02 所属栏目:百科 来源:网络整理
导读:Swift中的协议 Swift中的常用协议 Equatable Equatable 协议用于相等的比较,遵守这个协议后必须对 == 运算符进行重载。 struct Record: Equatable { var wins: Int var losses: Int}func ==(left: Record,right: Record) - Bool { return left.wins == righ
Swift中的协议Swift中的常用协议Equatable
struct Record: Equatable { var wins: Int var losses: Int } func ==(left: Record,right: Record) -> Bool { return left.wins == right.wins && left.losses == right.losses } let recordA = Record(wins: 10,losses: 5) let recordB = Record(wins: 10,losses: 5) recordA == recordB//true recordA != recordB//false 重载 Comparable
struct Record: Equatable,Comparable { var wins: Int var losses: Int } func ==(left: Record,right: Record) -> Bool { return left.wins == right.wins && left.losses == right.losses } func <(left: Record,right: Record) -> Bool { if left.wins != right.wins { return left.wins < right.wins } return left.losses > right.losses }
var team1Record = Record(wins: 10,losses: 3) var team2Record = Record(wins: 8,losses: 5) var team3Record = Record(wins: 8,losses: 8) var records = [team1Record,team2Record,team3Record] records.sort() CustomStringConvertible遵循 struct Record: Equatable,Comparable,CustomStringConvertible { var wins: Int var losses: Int var description: String { return "WINS: " + String(wins) + ",LOSSES: " + String(losses) } } 这时 BooleanType
var boolValue: Bool { return wins > losses } 就可以这样使用 if recordA { } 同样可以让基本类型实现 extension Int: BooleanType { public var boolValue: Bool { return self != 0 } } var wins = 0 if !wins { print("You never win!") } 面向协议编程(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |