swift 使用Equatable,Hashable 来判断是否相同

224 阅读1分钟

官方文档

  • 定义一个结构体
struct Person:Equatable,Hashable {
    var name:String = ""
    var age:Int
    
    init(name:String,age:Int) {
        self.name = name
        self.age = age
    }
}
  • 判断
var roy = Person(name: "Roy", age: 18)
var lily = Person(name: "Lily", age: 17)

if roy == lily {
    debugPrint("两个struct相同")
}
  • 定义一个class
class Student:Equatable {
    static func == (lhs: Student, rhs: Student) -> Bool {
        return (lhs.name == rhs.name && lhs.age == rhs.age)
    }
    
    var name:String = ""
    var age:Int
    
    init(name:String,age:Int) {
        self.name = name
        self.age = age
    }
}
let ming = Student(name: "小明", age: 8)
let hong = Student(name: "宵宫", age: 18)
if ming == hong {
    debugPrint("两个class 相同")
}
  • 打印内存地址
withUnsafePointer(to: &roy) { p in
    debugPrint(p)
}