본문 바로가기
iOS/iOS

Hashable

by 황민우 2022. 6. 16.

Hashable

- 정수 Hash 값을 제공하는 타입

- 프로토콜
- Set 또는 Dictionary의 Key로 Hashable을 준수하는 모든 타입을 사용할 수 있습니다.
- Dictionary의 Key, Set에서 값을 찾는 기본 방법, 주로 구조체에서 사용

 

 

준수

- 구조체의 경우, 저장 프로퍼티는 모두 Hashable을 준수해야 합니다.
- 열거형의 경우, 모든 Associated Values는 모두 Hashable을 준수해야 합니다.

 

 

Dictionary는 Hashable

- Swift에서 Dictionary는 Dictionary <KeyType, ValueType> 형태로 쓰입니다.
- Dicttionary의 유일한 제약사항은 반드시 KeyType은 해쉬 가능한 타입 이어야 한다는 것입니다.
- 즉, 그 자체로 유일하게 표현이 가능한 방법을 제공해야 한다는 것입니다.

 

 

구현

var identifire = ... // 식별할 수 있는 변수

...

static func ==(lhs: Self, rhs: Self) -> Bool {
  return lhs.identifire == rhs.identifire
}

func hash(into hasher: inout Hasher) {
  hasher.combine(identifire)
}

- 현재 Swift 5 기준으로는 hashValue를 직접 설정해주는 건 deprecated 되었고 
- Hashable protocol에 있었던 func hash(into hasher: inout Hasher)를 사용하라고 합니다.

func hash(into hasher: inout Hasher) {
    hasher.combine(identifire)
  }

- Hasher는 hashValue를 생성해주는 존재입니다.
- Hasher는 combine이라는 메서드를 가지고 있습니다.
- 이 메서드를 사용해 식별할 수 있는 identifier를 Hasher에게 넘겨주면 됩니다.


내용 출처

https://babbab2.tistory.com/149

 

Swift) Hashable에 대해 알아보자

안녕하세요 :) 소들입니다 일주일에 글 한 개 쓰기 위해!!!!!!!!! 노력하는 주인장!!!!!! 아직 일요일 안지났으니까 일주일 안 지난 거겠죠? :( 내 롤 절대지켜..;; 라고 써놓고 일이 너무 바빠서 이제

babbab2.tistory.com

https://woongsios.tistory.com/145

 

Hashable in Swift 5

요즘 CS193p 강의를 다시 보고 있는데 이런 내용이 있었나 와 정말 이렇게 알찬 강의였나 라는 생각이 계속 드네요 너무도 배울게 많고 부족했던게 많았구나를 알려주는 강의인 것 같습니다. protoc

woongsios.tistory.com

https://zeddios.tistory.com/498

 

Swift ) Hashable

안녕하세요 :) Zedd입니다. Swift 4.1변경사항 글을 쓰다가..Hashable을 제가 잘 안써서.........ㅎ.......제가..Hashable에 대해...아는건...Dictionary Key로 오려면 Hashable이어야 한다는 것 밖에...그래서 뭔..

zeddios.tistory.com

 

'iOS > iOS' 카테고리의 다른 글

nib  (0) 2022.06.18
Equatable  (0) 2022.06.17
Result타입  (0) 2022.06.13
접근 제어자의 종류  (0) 2022.06.11
NSCache와 NSDictionary의 차이를 설명하시오.  (0) 2022.06.09

댓글