적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Swift iOS 앱 개발/Swift

[Swift] Hashable이란? + Equatable 상속해야하는 이유?

hongssup_ 2023. 1. 6. 19:15
반응형
Hashable 프로토콜을 준수하는 모든 인스턴스는 hashValue라는 정수형 프로퍼티를 갖고 있으며 이 값은 각각의 인스턴스를 식별하는 값이 된다. 즉 인스턴스끼리 같은지 다른지 비교해야하므로 Equatable 상속이 필요함

 

Set 또는 Dictionary의 Key로 hashable을 준수하는 모든 타입을 사용할 수 있음.

반드시 하나만 존재해야하는 딕셔너리의 키 값이나 중복된 값은 허용하지 않는 자료구조인 세트

public protocol Hashable : Equatable {
    var hashValue: Int { get } //deprecated
    func hash(into hasher: inout Hasher)
}

 

해시를 사용하면 O(1)의 시간복잡도를 가질 수 있는 이유..?

 

Hashable이 Equatable를 상속해야하는 이유

Hashable 프로토콜을 준수하는 모든 인스턴스는 hashValue라는 정수형 프로퍼티를 갖고 있으며 이 값은 각각의 인스턴스를 식별하는 값이 된다. 즉 인스턴스끼리 같은지 다른지 비교해야하므로 Equatable 상속이 필요함

 

 


참고 : 

https://youtu.be/9GQZ1aharGg

728x90
반응형