728x90
Apple Developer Documentation
developer.apple.com
Equatable
- value 값으로 type이 같은지 비교할 수 있게 하는 프로토콜
- 이 프로토콜을 채택한 type의 인스턴스들은 '==' 로 비교가 가능하다.
- 자바의 Comparable과 유사한 역할
- static func == (lhs: Self, rhs: Self) 함수를 정의해서 비교 기준을 정해줘야 한다.
- struct, enum 등 값 type들에서도 사용이 가능
- struct에서 채택 시 == 함수를 꼭 정의할 필요가 없는데 이 때는 struct의 모든 프로퍼티가 같은지를 자동으로 비교해준다.
import Foundation
class A: Equatable {
static func == (lhs: A, rhs: A) -> Bool {
return lhs.name == rhs.name && lhs.age == rhs.age
}
var age: Int
var name: String
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
let a = A(name: "Park", age: 19)
let b = A(name: "Park", age: 20)
print(a == b)
b.age = 19
print(a == b)
/* 결과
false
true
*/
728x90
'Swift' 카테고리의 다른 글
[Swift] 옵셔널 추출 (Optional Unwrapping) (0) | 2021.05.05 |
---|---|
[Swift] Selector (0) | 2021.04.22 |
[Swift] 요구 이니셜라이저 (Required Initializer) (0) | 2021.03.02 |
[Swift] 오류처리 (Error Handling) (0) | 2021.01.28 |
[Swift] 서브스크립트 (Subscript) (0) | 2021.01.17 |
댓글