Equatable, Hashable
Equatable
Protocol
Equatable
A type that can be compared for value equality.
Equatable
프로토콜을 채택한 타입(class, value, enum)은 ==
, !=
연산자로 값의 같음, 같지 않음을 비교할 수 있다.
스위프트 표준 라이브러리의 대부분의 기본 데이터 타입은 Equatable 프로토콜을 따르고 있다.
class StreetAddress {
let number: String
let street: String
let unit: String?
init(_ number: String, _ street: String, unit: String? = nil) {
self.number = number
self.street = street
self.unit = unit
}
}
extension StreetAddress: Equatable {
static func == (lhs: StreetAddress, rhs: StreetAddress) -> Bool {
return
lhs.number == rhs.number &&
lhs.street == rhs.street &&
lhs.unit == rhs.unit
}
}
Equatable 프로토콜을 준수하기 위해서는
static func == (lhs: StreetAddress, rhs: StreetAddress) -> Bool
함수의 구현부를 작성해야 한다. ==
함수 정의에 따라 타입을 비교(같은지, 같지 않은지)할 수 있다.
Hashable
Protocol
Hashable
A type that can be hashed into a Hasher to produce an integer hash value.
integer 해쉬 값을 가질 수 있는 타입을 의미한다.
Hashable Protocol을 준수한 타입은 Dictionary나, Set의 key가 될 수 있다.
다음 hash
메서드를 필수로 구현해야 한다.
hash 메서드를 구현해서 hash value를 얻을 수 있다.
func hash(into: inout Hasher)
// Hashes the essential components of this value by feeding them into the given hasher.
Hashable은 Equatable 상속하고 있으므로, ==
함수도 필수로 구현해야 한다.
==
으로 비교할 때와 HashValue를 사용하는 경우를 이해하고, 비교할 속성을 잘 정의할 수 있어야 한다.
See Also
https://zeddios.tistory.com/equatable
https://velog.io/@dev-lena/Hashable
Author And Source
이 문제에 관하여(Equatable, Hashable), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lena_/Equatable-Hashable저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)