群组
Flutter,iOS,Android,Python等,闲聊工作&技术&问题;
个人主页:https://waitwalker.cn
telegram群链接:https://t.me/joinchat/Ej0o0A1ntlq5ZFIMzzO5Pw
一般判断两个对象是否相等方法:
如果两个对象相等其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