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을 채택해주면 되는 것 같다.