Swift_Equable

群组
欢迎加入群组,闲聊工作&技术&问题等

一般判断两个对象是否相等方法:

如果两个对象相等其hashValue一定相等,不能反过来倒推.

1)如果两个对象的hashValue不相等,则认为这两个对象一定不相等

2)如果两个对象的hashValue相等,则比较两个对象的指针和两对象的内容是否相等,如果相等,则认为这两个对象是相等的

Swift中一些数据类型Int,Double,Bool等均已遵守实现Equable协议,所以在使用的时候可以用”==”操作符直接比较两个变量就行.

如果有一些自定义类型需要比较,需要遵守Equable协议,并且重写 public static func == (lhs: Self, rhs: Self) -> Bool方法.

class Person {
    var name:String?
    var age:Int?
    init(name:String,age:Int) {
        self.name = name
        self.age = age
    }
}

extension Person:Equatable {
    static func == (lhs: Person, rhs: Person) -> Bool {
        return lhs.name == rhs.name && lhs.age == rhs.age
    }
}

let person1 = Person(name: "zhangsan", age: 18)
let person2 = Person(name: "lisi", age: 20)
print(person1==person2) //false

  转载请注明: waitwalker Swift_Equable

  目录