티스토리 뷰

enum 값을 앞에서 다루는 방법을 알아보았는데요.


이 값을 switch에 넣어서 사용하는것보다는 if문에서 처리하는게 편할수도 있는 경우가 있습니다.


딱 한개 값만 가져와서 사용할 정도랄까... 그럼 코드 들어갑니다.


1. if case let


1
2
3
4
5
6
7
8
9
10
11
12
13
14
enum CustomType {
    case number(_ value: Int)
    case string(_ value: String)
}
 
let number = CustomType.number(1)
 
if case let CustomType.number(value) = number {
    print("number = \(value)")
else {
    print("not number")
}
 
// number = 1
cs


이렇게 하면 number의 타입에 대해서 사용이 가능합니다.


만약 enum값이 string일 경우에는 아래의 not number가 나오게 되겠죠


2. if case let where


1
2
3
4
5
6
7
8
9
10
11
12
13
enum CustomType {
    case number(_ value: Int)
    case string(_ value: String)
}
 
let number = CustomType.number(1)
if case let CustomType.number(value) = number, value > 2 {
    print("number = \(value)")
else {
    print("not number or number not over 2")
}
 
// not number or number not over 2
cs


3. guard case let, guard case let where


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
enum CustomType {
    case number(_ value: Int)
    case string(_ value: String)
}
 
func test() {
    let number = CustomType.number(1)
    guard case let CustomType.number(value) = number, value > 2 else {
        print("not number or number not over 2")
        return
    }
    
    print("number = \(value)")
}
 
test()
cs


이것도 동일하게 if를 처리할 때와 같습니다.


4. for case let


1
2
3
4
5
6
7
8
9
10
11
12
enum CustomType {
    case number(_ value: Int)
    case string(_ value: String)
}
func test() {
    let types = [CustomType.number(1), CustomType.string("a"), CustomType.number(2)]
    for case let CustomType.number(value) in types {
        print("number = \(value)")
    }
}
 
test()
cs


결과는

number = 1

number = 2


5. for case let where


1
2
3
4
5
6
7
8
9
10
11
12
enum CustomType {
    case number(_ value: Int)
    case string(_ value: String)
}
func test() {
    let types = [CustomType.number(1), CustomType.string("a"), CustomType.number(2)]
    for case let CustomType.number(value) in types where value >= 2 {
        print("number = \(value)")
    }
}
 
test()
cs


결과는

number = 2


그럼 응용해서 더 좋은 프로그램 하시길 바랍니다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함