프로그래밍에서 두 객체나 값을 비교하여 같은지 확인하는 것은 흔한 작업입니다. Swift는 Equatable 프로토콜을 통해 이 작업을 효율적으로 수행할 수 있게 합니다.
Equatable은 Swift의 프로토콜로, == 연산자를 사용하여 타입의 인스턴스를 값의 동등성에 따라 비교할 수 있게 합니다. 단순히 말하면, 타입의 두 인스턴스가 같은 값인지 결정할 수 있게 해줍니다.
사용자 정의 객체의 목록이 있고 해당 목록에 특정 객체가 이미 있는지 확인하려고 한다고 상상해 보세요. Equatable 프로토콜을 채택함으로써, 배열에 의해 제공되는 contains 메서드를 간단히 사용할 수 있습니다.
Equatable을 어떻게 준수하나요?
Equatable을 준수하는 것은 간단합니다. 대부분의 경우, 당신의 타입의 속성들도 Equatable이면 Swift는 자동으로 == 함수를 생성해줍니다.
예제:
struct Book: Equatable {
let title: String
let author: String
}
let book1 = Book(title: "Swift 프로그래밍", author: "홍길동")
let book2 = Book(title: "Swift 프로그래밍", author: "홍길동")
print(book1 == book2) // true가 출력됩니다
위 예제에서 title과 author는 모두 String 타입이며, String은 Equatable을 준수하기 때문에, Swift는 우리의 Book 구조체에 대해 자동으로 == 함수를 생성합니다.
하지만, 동등성에 대한 사용자 정의 로직이 있는 경우, 직접 구현할 수 있습니다:
struct Person: Equatable {
let name: String
let age: Int
static func ==(lhs: Person, rhs: Person) -> Bool {
return lhs.name == rhs.name && lhs.age == rhs.age
}
}
결론적으로, Equatable은 객체와 값의 비교를 쉽게 만드는 Swift의 강력한 도구입니다. 이것을 이해하고 활용함으로써, 보다 효율적이고 깔끔한 코드를 작성할 수 있습니다.