dev._.note

[Swift] Enum(열거형) 본문

Dev/SWIFT

[Swift] Enum(열거형)

Laena 2023. 11. 7. 22:24

👏 Enum이란?

Enum은 Enumeration(열거형)의 줄임말로써 서로 연관된 값들의 집합을 정의할 수 있는 자료형.
Swift에서는 열거형이 일반적으로 String, Int 등의 원시값(Raw Value) 또는 연관 값(Associated Value)을 가질 수 있음.
이를 통해 코드의 가독성을 높이고 정확성을 유지하면서 간결한 코드를 작성할 수 있음.

 


 

👏 Enum을 사용하지 않는 경우

Enum을 사용하지 않으면, 상태를 변수로 선언하고 이를 조건문 등을 통해 비교하여 사용 할 수 있음.

 

예시)

let a = "A"
let b = "B"
let value = a

if value == a {
	print("값은 A입니다.")
} else if value == b {
	print("값은 B입니다.")
} else {
	print("값을 알 수 없습니다.")
}

 

상태를 String으로 선언하고 조건문으로 비교하여 사용할 수 있음.

하지만 이렇게 사용하면 가독성이 떨어지는 등 문제가 생김.

 


👏 Enum을 사용하는 경우

Enum을 사용하면 상태를 Enum으로 정의하여 이를 변수로 선언하고 사용할 수 있음.

 

예시)

enum eValue {
	case A
    case B
}

let value: eValue = .A

switch value {
	case .A:
    	print("값은 A입니다.")
    case .B:
    	print("값은 B입니다.")
}

 

Eum을 사용하면 변수의 값이 상태가 되고 switch문으로 변수의 값에 따라 다른 동작을 수행할 수 있음.

가성성이 좋고 코드가 간결해지는 장점.

 


 

👏 Enum을 활용하는 방법

Enum에서는 rawValue, caselterable, 연관 값등의 기능을 사용할 수 있음.

 

 

1. rawValue(원시값)

Enum에서는 rawValue를 사용하여 Enum의 값을 다른 값으로 변환할 수 있음.

rawValue는 Enum에서 각 case의 값으로, 정수형, 문자열등을 사용할 수 있음.

 

enum eVal: Int {
	case A = 0
    case B = 1
}

let value = eVal(rawValue: 1)

switch value {
	case .A:
    	print("값은 A입니다.")
	case .B:
    	print("값은 B입니다.")
	case nil:
    	print("값을 알 수 없습니다.")
}

enum color: String {
	case red = "red"
    case blue = "blue"
}

let redColor: color = .red
print(redColor.rawValue)

 

2. caselterable

Enum에서는 rawValue를 사용하여 Enum의 값을 다른 값으로 변환할 수 있음.

rawValue는 Enum에서 각 case의 값으로, 정수형, 문자열등을 사용할 수 있음.

 

enum Value: String, Caselterable {
	case A = "A"
    case B = "B"
}

for value int Value.allCases {
	print(value.rawValue)
}
// "A"
// "B"

 

3. 연관값

Enum에서는 rawValue를 사용하여 Enum의 값을 다른 값으로 변환할 수 있음.

rawValue는 Enum에서 각 case의 값으로, 정수형, 문자열등을 사용할 수 있음.

 

enum State {
	case A(value: Int)
    case B(value: String)
}

let current = State.A(value: 10)

switch current {
	case .A(let value):
    	print("현재상태는 A이며, 값은 \(value)입니다.")
	case .B(let value):
    	print("현재상태는 B이며, 값은 \(value)입니다.")
}

 

4. switch 이용

Enum에서는 rawValue를 사용하여 Enum의 값을 다른 값으로 변환할 수 있음.

rawValue는 Enum에서 각 case의 값으로, 정수형, 문자열등을 사용할 수 있음.

 

enum State {
	case A(value: Int)
    case B(value: String)
    case C
}

let current = State.A(value: 10)

switch current {
	case .A(let value):
    	print("현재상태는 A이며, 값은 \(value)입니다.")
	case .B(let value):
    	print("현재상태는 B이며, 값은 \(value)입니다.")
	case .A(let value):
    	print("현재상태는 C입니다.")
}

for state int State.allCases {
	print(state)
}

for case let .A(value) int State.allCases {
	print("A 상태의 값은 \(value)입니다.")
}

'Dev > SWIFT' 카테고리의 다른 글

[Swift] Dictionary (사전형)  (0) 2023.11.12
[Swift] Set (집합)  (0) 2023.11.10
[Swift] for문과 while문  (0) 2023.11.06
[Swift] 변수와 상수  (0) 2023.11.02
[Swift] if문과 switch문 기초문법  (1) 2023.10.30