티스토리 뷰
Mobile/iOS
swift. Type matching - 4. if case let, guard case let, for case let
out of coding 2019. 3. 23. 20:21enum 값을 앞에서 다루는 방법을 알아보았는데요.
이 값을 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
그럼 응용해서 더 좋은 프로그램 하시길 바랍니다.
'Mobile > iOS' 카테고리의 다른 글
iOS. Alamofire GET request array param의 brackets 없애기... 다른말로 [] 없애서 보내기 (0) | 2019.06.19 |
---|---|
swift. map, flatMap, compactMap (0) | 2019.04.01 |
swift. Type matching - 3. Custom aka. ~= (0) | 2019.03.23 |
swift. Type matching - 2. Type별 (0) | 2019.03.23 |
swift. Type matching - 1. enum의 경우 (0) | 2019.03.23 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Gradle
- nodejs
- ios
- go
- php
- centos8
- Java
- Windows
- MySQL
- git
- intellij
- Xcode
- rxswift
- war
- windows10
- Spring
- Codable
- Python
- Kotlin
- golang
- docker
- ubuntu
- SWIFT
- android
- github
- enum
- cocoapods
- CentOS
- tomcat
- Linux
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함