enum 열거형 (feat. CaseIterable)
enum 열거형
오늘은 enum에 대해서 알아보겠습니다.
열거형
- 열거형은 연관된 항목들을 묶어서 표현할 수 있는 타입입니다.
- 열거형은 프로그래머가 정의해준 항목 값 외에는 추가/수정이 불가능합니다.
열거형은 다름 같은 경우에 사용하면 좋습니다.
- 제한된 선택지를 주고 싶을 때
- 정해진 값 외에는 입력받고 싶지 않을 때
- 예상된 입력 값이 한정되어 있을 때
기본 문법
열거형의 이름은 타입이므로 맨앞에 대문자를 사용합니다.
한 항목당 한줄 씩 적을 수 도 있고 한줄에 모두 적을 수도 있습니다.
enum Phone {
case iphone
case Galaxy
case shaomi
case LG
case Blackberry
}
enum Phone {
case iphone, Galaxy, shaomi, LG, Blackberry
}
원시값
열거형의 각 항목은 자체로도 하나의 값이지만 항목의 원시값(Raw Value)도 가질 수 있습니다.
원시값을 지정하고 싶다면 아래와 같이 열거형 이름 오른쪽에 타입을 명시해주고 각 항목마다 옆에 원시값을 적어줍니다.
또 원시값을 사용하고 싶다면 rawValue 프로퍼티를 사용합니다.
enum Phone: String {
case iphone = "아이폰"
case Galaxy = "갤럭시"
case shaomi = "샤오미"
case LG = "엘지"
case Blackberry = "블랙베리"
}
let myPhone: Phone = Phone.iphone
print(myPhone.rawValue) // 아이폰
enum과 caseIterable를 사용하여 항목 순회
enum 타입에서 caseIterable프로토콜을 채택하여 allCases타입 프로토콜을 통해 모든 케이스의 컬렉션을 생성할 수 있다.
allCases를 사용하면 enum의 항목들을 배열처럼 사용할 수 있습니다.
아래와 같이 randomElement()을 사용하여 랜덤으로 뽑을 수도 있고,
map과 같은 고차함수를 이용하여 enum의 항목들을 출력해 줄 수도 있습니다.
enum Phone: String, CaseIterable {
case iphone = "아이폰"
case Galaxy = "갤럭시"
case shaomi = "샤오미"
case LG = "엘지"
case Blackberry = "블랙베리"
}
if let buyPhone = Phone.allCases.randomElement(){
print(buyPhone)
} // 항목 랜덤으로 출력
let buyPhone = Phone.allCases.map({"\($0)"}).joined(separator: ", ")
print(buyPhone) //iphone, Galaxy, shaomi, LG, Blackberry
Author And Source
이 문제에 관하여(enum 열거형 (feat. CaseIterable)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@qudgh849/enum-열거형-feat.-CaseIterable저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)