열거형

열거형

  • 같은 주제로 연관된 데이터들을멤버로 구성하여 나타내는 자료형
  • 공통된 주제에 대해서 정해놓은 입력 값만 선택해서 받고 싶을 때 사용 하는 것

정의

원시값(Raw Value) X

enum Position {
	case warrior
    case sorceress
    case healer
}

let player: Position = .warrior

원시값 (Raw Value) O

enum Position: Int {
// 아무 값이 없으면 자동으로 첫 번째 부터 0으로 시작
// 이후 정수값 1씩 더함 
	case warrior	//0
    case sorceress	//1
    case healer		//2
//------------------------
// 값을 지정했을 때
	case warrior 		//0	
    case sorceress = 4
    case healer			//5
}

연관값 (Associated Values)

enum Monster: String {
	case goblin = "hp: 100, atk: 10"
    case boss = "hp: 10000, atk:100"
}
// case들이 같은 Raw Value를 가지는 단점이 존재 이때 연관 값을 사용
//-------------------
// 연관값 사용
// 튜플을 활용하여 연관 값을 받음
enum Monster {
	case goblin(hp: Int, atk: Int) 
    case boss(hp: Int, atk: Int)
}

연관값 열거형 생성

let monster: Monster = .goblin(hp: 100, atk: 10)
//열거형 활용 switch 매칭
switch monster {
case .goblin(hp: 20, atk: 10):
    print("Lv1 고블린")
case .goblin(hp: 100, _):
    print("고기방패")
case .goblin(hp: 100, atk: 10):
    print("lv5 고블린")
case .boss(let hp, let atk):
    print("\(hp), \(atk) 끝판왕")
case .goblin:
    print("걍 고블린")
}

좋은 웹페이지 즐겨찾기