본문 바로가기
FRONT-END/iOS

자바스크립트와 비교하며 Swift 공부하기 - 열거형편

by 랄라J 2023. 7. 11.

자바스크립트에서 오타 등을 방지하기 위해 Constant.js 파일을 만들어 불러와 사용했던 것을 Swift에는 열거형 문법으로 정의되어있다고 생각하면 됨

 

열거형(Enumerations)

  • 관련 있는 상수들을 하나의 이름으로 묶는 자료형
  • 코드의 가독성과 안정성이 높아짐
  • 주로 switch문으로 분기처리하여 사용 
enum Fruit { // 타입이름은 대문자를 사용
    case apple // 케이스이름은 소문자를 사용
    case banana
    case grape 
}

var myFavoriteFruit: Fruit = Fruit.apple
// 위처럼 타입을 명시해 준 경우 아래와 같이 작성 가능
myFavoriteFruit = .grape

 

열거형의 원시값

enum Fruit: Int {
    case apple // 0
    case banana // 1
    case grape // 2
}

// 타입을 String으로 지정하면 케이스에 해당하는 rawValue는 케이스 이름으로 자동 저장됨

var myFavoriteFruit = Fruit(rawValue: 0)
var apple = Fruit.apple.rawValue // 0
  • Int나 String 2가지 중 1가지를 사용
  • 열거형에 원시값 타입을 칭하는 것을 의미
  • 원시값을 지정하면 자동으로 값이 저장됨

 

열거형의 연관값

  • 구체적인 추가정보를 저장하기 위해 사용함 (각 케이스별로 상이한 특징이 있고, 그것을 저장/활용할 필요가 있을 때 사용함)
  • 각각 케이스마다 저장할 형식을 지정할 수 있음 (자료형에 제한없고, 튜플 형태)

 

열거형 추가정보

  • 단, 열거형의 원시값과 연관값은 배타적인 관계로 동시에 사용하는 것은 불가능
  • 열거형 case 패턴으로 switch문이 아닌 조건문/반복문에서도 특정 case만을 다루기 위해 case를 사용하는 패턴 존재
    (if - case / for - case)
  • 표현식이 옵셔널 타입인 경우 편의적 기능을 제공하는 옵셔널 패턴 존재
  • switch default 앞에 @unknown 키워드를 입력하면 case에 모든 경우를 다루는지 에러를 표시해줌
반응형

댓글