Hashable이란?

Untitled

먼저 최초의 질문은 Hashable이라는 프로토콜이 무엇인지에 대한 궁금증에서 출발한다.

Hashable이란, hasher로 인하여 int값인 hash value를 가져서 hashing 될수있는 타입을 의미한다.

그렇다면 Hasher는?

Untitled

Hasher는 구조체 이며, hash 함수이며, 주로 셋과 딕셔너리 타입에서 사용한다.

해당 메소드를 보면 다음과 같은데

직접 쳐본 코드

직접 쳐본 코드

해시(Hash)

쉽게 말해서 딕셔너리 같은 타입이 해시를 사용하게 되는데, 이는 Key와 Value값의 1대1 매핑을 해주게 되는 자료형이다. 그런데 이때 이 value값을 해시테이블이라는 배열에 저장하게 된다.

Untitled

즉, 이렇게 배열에 key값을 해싱함수에 넣게 되면, 해당 주소값(해시값)을 통해서 hashtable의 배열 위치를 알게 되고, 이 위치에 value를 저장하게 되는것이다.

다시 정리하자면,

Key라는 것을 해시 함수를 이용해 **해시 주소값(해시 테이블의 index)**으로 바꾸고,