假如你有一个自定义类的列表,想要对它排序,怎么办?在新闻APP中,我的新闻列表就是一个自定义class的数组,用户一会儿要最新、一会儿要更多旧数据的可能性,使得它需要按时间有序。我是懒人,自己一个个拿key比较写起来觉得好麻烦,Swift这么高级的语言,应该有别的更好的办法才对!又祭出官方文档找灵感,然后看到了:Comparable。
Comparable是一个协议,遵守这个协议的所有类型,都可以直接比大小。而对于自定义的类型,遵守它就行了:
class MyClass : Comparable {
var key : Int = 0
}
//在Class定义之外实现
func < (left: MyClass, right: MyClass) -> Bool {
return left.key < right.key
}
func == (left: MyClass, right: MyClass) -> Bool{
return left.key == right.key
}
我们只要实现\<和== 两个函数,编译器会自动帮我们判断>和!=的情况。于是,现在这样的排序或者比较都是合法的了:超easy!😄
var a : MyClass = []
//TODO:a填了一些数据之后……
a.sort()
a[1] > a[0]