我如何实现Swift的Comparable协议?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何实现Swift的Comparable协议?相关的知识,希望对你有一定的参考价值。
如何在Swift中使用Comparable协议?在声明中它说我必须实现三个操作<,<=和> =。我把所有这些都放在课堂上,但它不起作用。我还需要拥有这三个吗?因为应该可以从一个推断出所有这些。
答案
Comparable协议扩展了Equatable协议 - >实现它们
在Apple's Reference中是Apple的一个示例(在Comparable协议参考中),您可以看到如何执行此操作:不要将操作实现放在类中,而是放在外部/全局范围内。此外,您只需要实施<
协议的Comparable
运算符和==
协议的Equatable
。
正确的例子:
class Person : Comparable {
let name : String
init(name : String) {
self.name = name
}
}
func < (lhs: Person, rhs: Person) -> Bool {
return lhs.name < rhs.name
}
func == (lhs: Person, rhs: Person) -> Bool {
return lhs.name == rhs.name
}
let paul = Person(name: "Paul")
let otherPaul = Person(name: "Paul")
let ben = Person(name: "Ben")
paul > otherPaul // false
paul <= ben // false
paul == otherPaul // true
另一答案
更新Swift 3 for Kametrixom的回答
class Person : Comparable {
let name : String
init(name : String) {
self.name = name
}
static func < (lhs: Person, rhs: Person) -> Bool {
return lhs.name < rhs.name
}
static func == (lhs: Person, rhs: Person) -> Bool {
return lhs.name == rhs.name
}
}
//然后从其他地方打电话
let paul = Person(name: "Paul")
let otherPaul = Person(name: "Paul")
let ben = Person(name: "Ben")
print(paul > otherPaul) // false
print(paul <= ben) // false
print(paul == otherPaul) // true
以上是关于我如何实现Swift的Comparable协议?的主要内容,如果未能解决你的问题,请参考以下文章
如何理解 Java 中的 lt;T extends Comparable<
OpenCV IOS Swift 2:如何实现CvVideoCameraDelegate协议处理视频帧