HIT해

[Swift 기초문법 - 42] Equatable 본문

Swift/Swift 기초문법

[Swift 기초문법 - 42] Equatable

힛해 2024. 8. 17. 09:15
728x90

JSON 통신이나 AF TCA 에서 자주 사용되는 Equatable이 무엇일까.

항상 사용하라고만해서 사용했지 무슨 의미로 사용되는지 몰랐었다.

 

Equtable이란

Swfit 표준 라이브러리에 정의된 프로토콜로 타입이 동등성 검사를 지원하기 위해 채택하는 프로토콜이다.

즉 두 인스턴스가 같은지 아닌지를 비교할 수 있게 해준다.

이 프로토콜을 채택한 타입은 == 연산자를 구현해야 하며 이는 두 인스턴스가 동일한지 확인하는 데 사용된다.

 

Equatable의 기본 개념

protocol Equatable {
    static func ==(lhs: Self, rhs: Self) -> Bool
}

 

자동으로 != 연산자도 제공된다.

 

Equtable 프로토콜 구현

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
    }
}

 

이제 두 인스턴스를 비교할 수 있다.

let person1 = Person(name: "Alice", age: 30)
let person2 = Person(name: "Alice", age: 30)
let person3 = Person(name: "Bob", age: 25)

print(person1 == person2)  // 출력: true
print(person1 == person3)  // 출력: false

 

실제 코드를 통해 알아보자.

 

두 인스턴스를 비교할 수 없다고 말하지만 Equtable을 추가한다면?

 

에러메세지도 사라지고 

 

비교도 정상적으로 되는 것을 확인할 수 있다.