iOS - Swift

[iOS/Swift/Basic] 열거형 Enumerations : 비교 가능한 열거형 - Comparable

개발자 수니 2024. 1. 26. 21:17
728x90
반응형

📑 이전글

[iOS/Swift/Basic] 열거형 Enumerations : 원시값 Raw Values, 연관값 Associated Values

[iOS/Swift/Basic] 열거형 Enumerations : 항목 순회 - CaseIterable

[iOS/Swift/Basic] 열거형 Enumerations : 순환 열거형 - indirect

 

Comparable 

  • Swift 프로그래밍 언어에서 제공하는 프로토콜
  • 이 프로토콜을 채택하면 연관 값(Associated Values)만 갖거나 연관 값(Associated Values)이 없는 열거형(Enumerations)은 각 케이스를 비교할 수 있다.
  • 앞에 위치한 케이스가 더 작은 값

 

연관 값(Associated Values)이 없는 예제

enum AppleDevice: Comparable {
    case iPhone
    case iPad
    case macBook
    case iMac
}

let myDevice: AppleDevice = .iMac
let yourDevice: AppleDevice = .iPhone

if myDevice > yourDevice {
    print("제 디바이스가 더 크네요!")
} else if myDevice < yourDevice {
    print("당신의 디바이스가 더 크네요!")
} else {
    print("우리 디바이스가 같네요!")
}
// 제 디바이스가 더 크네요!

 

연관 값(Associated Values)만 갖는 예제

enum AppleDevice: Comparable {
    case iPhone(version: String)
    case iPad(version: String)
    case macBook
    case iMac
}

var devices: [AppleDevice] = []
devices.append(.iMac)
devices.append(.iPhone(version: "6.1"))
devices.append(.iPhone(version: "14.3"))
devices.append(.iPad(version: "10.3"))
devices.append(.macBook)

let sortedDevices: [AppleDevice] = devices.sorted()
print(sortedDevices)
// [AppleDevice.iPhone(version: "14.3"), AppleDevice.iPhone(version: "6.1"), AppleDevice.iPad(version: "10.3"), AppleDevice.macBook, AppleDevice.iMac]

 

 

 

🙋🏻‍♀️ 참고

야곰, ⌜스위프트 프로그래밍: Swift5⌟, 한빛미디어(2019)

728x90
반응형