728x90
Hashable은 Swift에서 특정 객체가 고유하게 식별될 수 있도록 해주는 프로토콜입니다. 쉽게 말해, 객체를 숫자로 변환해서 다른 객체들과 비교할 수 있게 해줍니다. 이 숫자를 해시값이라고 부르는데, 이 해시값을 이용하면 객체를 빠르게 찾거나 비교할 수 있어요.
Hashable을 왜 사용할까요?
- Set이나 Dictionary 같은 자료 구조에서는 중복을 허용하지 않거나 키를 사용해 값을 저장하는데, 이를 위해 객체가 고유해야 하고, 해시값이 필요합니다.
- 해시값은 같은 객체가 중복되지 않도록 하거나 빠르게 검색하기 위한 일종의 숫자 코드입니다.
예를 들어, 친구 목록에서 중복된 이름을 제거하고 싶다면?
struct Friend: Hashable {
let name: String
let age: Int
}
let friend1 = Friend(name: "Alice", age: 25)
let friend2 = Friend(name: "Bob", age: 22)
let friend3 = Friend(name: "Alice", age: 25) // 같은 친구
var friendsSet: Set<Friend> = [friend1, friend2, friend3]
print(friendsSet.count) // 결과는 2, 중복된 Alice는 한 번만 들어감
- 위에서 Friend는 Hashable을 구현했고, Set에 들어갔어요.
- 같은 이름과 나이를 가진 친구는 중복되지 않고 한 번만 들어갑니다.
해시값이란?
해시값은 객체를 고유하게 구분하는 숫자 코드입니다. 두 객체가 같다면 해시값도 같아야 하고, 다르다면 해시값도 다르게 만들어야 합니다.
기본적인 설명을 요약하면:
- Hashable을 사용하면 객체가 고유한 ID를 가지게 되고, 이를 통해 빠른 검색과 중복 제거가 가능합니다.
- Swift의 기본 자료형(예: Int, String)은 이미 Hashable을 지원하고 있어서 바로 쓸 수 있어요.
즉, Hashable은 객체를 구분하기 위한 특별한 숫자 코드(해시값)를 부여해서, 이를 통해 자료구조에서 중복을 방지하거나 빠르게 검색하는 데 사용되는 프로토콜입니다.
728x90
'Category > iOS' 카테고리의 다른 글
UserDefaults, iOS에서 간단한 데이터를 로컬에 저장하는 방법 (1) | 2024.10.25 |
---|---|
TimeZone, iOS에서 시간 다루기 (1) | 2024.10.24 |
iOS 실제 기기에서 앱을 테스트하려면? (0) | 2024.10.24 |
SwiftUI 기본 폰트 스타일 정리 (0) | 2024.10.23 |
CocoaPods 및 Podfile 총정리 (2) | 2024.09.29 |