CaseIterable 프로토콜은 열거형에서 많이 사용되는 프로토콜입니다.
CaseIterable 프로토콜을 채택한 열거형은 타입 속성allCases
을 사용하여 열거형의 케이스를 배열로 반환할 수 있습니다.
enum Rainbow: CaseIterable{
case red
case orange
case yellow
case green
case blue
case navy
case violet
}
Rainbow.allCases
//[__lldb_expr_50.Rainbow.red, __lldb_expr_50.Rainbow.orange, __lldb_expr_50.Rainbow.yellow, __lldb_expr_50.Rainbow.green, __lldb_expr_50.Rainbow.blue, __lldb_expr_50.Rainbow.navy, __lldb_expr_50.Rainbow.violet]
열거형의 모든 케이스를 배열로 반환할 경우 다양한 기능을 사용할 수 있습니다.
대표적인 기능으로는
등이 있습니다.
✅ 열거형의 케이스 개수 확인
enum Rainbow: CaseIterable{ case red case orange case yellow case green case blue case navy case violet } print(Rainbow.allCases.count) // 7
✅ 고차함수 사용
enum Rainbow: CaseIterable{ case red case orange case yellow case green case blue case navy case violet } print(Rainbow.allCases.map{ "\($0)" }) // ["red", "orange", "yellow", "green", "blue", "navy", "violet"]
즉, CaseIterable 프로토콜은 열거형에서 배열에 다양한 기능을 사용하고 싶을 때 채택하는 프로토콜입니다.