개발/iOS

Equatable

allthi 2024. 11. 20. 13:02
반응형

Equatable의 의미

1. 단어 뜻

  • Equatable: "동등성을 비교할 수 있는"이라는 뜻을 가진 형용사입니다.
    • Equal(동등한)에서 파생된 말로, 어떤 두 객체가 같은지 확인할 수 있는지 여부를 나타냅니다.

2. iOS 개발에서의 의미

  • Equatable은 Swift에서 프로토콜로 제공되며, 객체 간의 동등성을 비교할 수 있도록 합니다.
    • Equatable 프로토콜을 채택하면 객체 또는 값 타입에서 == 연산자와 != 연산자를 구현하거나 사용할 수 있습니다.
    • 예를 들어, 두 객체가 같은 데이터 값을 가지는지 판단할 때 유용합니다.

3. 사용법

  1. Equatable을 채택한 타입은 반드시 == 연산자를 구현해야 합니다.
  2. Swift에서는 기본 타입(Int, String, Double 등)이 이미 Equatable을 채택하고 있습니다.
struct User: Equatable {
    let id: Int
    let name: String

    static func == (lhs: User, rhs: User) -> Bool {
        return lhs.id == rhs.id && lhs.name == rhs.name
    }
}

// 사용 예시
let user1 = User(id: 1, name: "Alice")
let user2 = User(id: 1, name: "Alice")

if user1 == user2 {
    print("두 유저는 동일합니다.")
} else {
    print("두 유저는 다릅니다.")
}

4. 주요 특징

  • 자동 구현: Swift 4.1 이상에서는 구조체 또는 열거형이 모든 멤버가 Equatable 프로토콜을 따를 경우, ==를 자동으로 구현합니다.
struct Point: Equatable {
    var x: Int
    var y: Int
}

let p1 = Point(x: 1, y: 2)
let p2 = Point(x: 1, y: 2)

print(p1 == p2) // true

요약

  • Equatable: "두 객체가 동등한지 비교할 수 있도록" 만드는 Swift 프로토콜.
  • 구현 시 ==!= 연산자를 통해 값을 비교 가능.
  • 기본 타입과 대부분의 간단한 구조체에서는 자동으로 지원.
반응형