Hashable 뭘까 ?

조영민·2022년 6월 19일
0

Hasable ... 많이 들어봤지만 정확히는 알지 못해서 면접에서 큰 코 다친
그 프로토콜

알아보자.

Dictionary

swift CollectionType 중 하나인 Dictionary 는
key, Value 값을 가진다.

Hashable이란 무엇일까 ?
모를땐 공식문서를 보자

Hasher를 통해 인트값인 hash value를 만들수있다고 ?

Hasher는 이거같은데 .. hash가 뭐지 ? 모르겠다.

Hashable을 채택한 값만 Dictionary의 Key값으로 쓰일 수 있다고 한다.
Hasable을 채택한 값은 hashValue라는걸 꺼낼 수 있는데 이거랑 연관이 있는 것 같다.

일단 Dictionary에서 특정 key값을 넣어서 나오는 Value값은 optional이다. 왜?
없을수도 있기 때문이다.

Swift의 기본타입 -> Int, Double, String 등등은 hasable하다.
커스텀 타입( 내가 만든 타입 ) 을 Hashable하게 만들고 싶으면
Hashable을 채택하면 된다.

사실 아니다. class는 불가.

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

이런걸 넣어주어야 한다.

아까 넘어갔던 hashValue가 뭘까 찾아봤는데, 공식문서 기가막힌다.
ㅋㅋㅋ
hasable을 채택하면 hashValue를 통해 자체적인 표현이 가능하고 그래서 key값이 겹치지 않게 판단이 되어서 hashable한 것만 key값으로 올 수 있다..?

커스텀타입을(내가 만든 타입) 을 비교해주고 싶을때 hashable을 채택해주면 되는 것 같다.

0개의 댓글