본문 바로가기
Swift

[Swift] Equatable

by Sky Titan 2021. 4. 21.
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

댓글