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 |
댓글