티스토리 뷰
이번 글에서는 Swift 의 Tuples 에 대해 알아보겠습니다.
1. Tuples
Swift 의 기본적인 자료형(Int, String, Bool 등)은 값을 하나만 저장할 수 있는 Scala Type 입니다.
Tuple 은 2개 이상의 값을 한번에 저장할 수 있는 자료형이며 이를 Component Type 이라고 합니다. 이때 서로 다른 자료형도 같이 저장할 수 있습니다.
// 표현식
// (expr1, expr2, ...)
// 각각의 expr 는 Tuple Member 라고 함
let data = ("<html>", 200, "OK", 12.34)
data // 자료형은 (String, Int, String, Double) 을 저장하는 튜플
// 튜플 멤버에 접근할 때는
// tuple표현식.n
// n 은 0-based Index
// Tuple 멤버에 이름이 없는 경우 index 로 접근함
data.0 // <html>
data.1 // 200
data.2 // OK
data.3 // 12.34
튜플의 크기는 튜플을 생성할 때 정해지기 때문에 새로운 멤버를 저장하거나 삭제할 수 없습니다. 단, 튜플이 변수로 선언된 경우 튜플의 멤버를 변경할 수는 있습니다.
// data.1 = 404 - 에러
var mutableTuple = data
mutableTuple.1 = 404
mutableTuple.1
2. Named Tuples
가독성을 높이기 위해 Tuple 멤버에 이름을 부여하는 방식으로 표현식과 사용 방법은 다음과 같습니다.
// 표현식
// (name1: expr1, name2: eapr2, ...)
// 접근 방법
// tuple표현식.memberName
let named = (body: "<html>", codeStatus: 200, codeMsg: "OK", dataSize: 12.34)
named.0 // <html>
named.body // <html>
named.codeStatus // 200
named.codeMsg // OK
named.dataSize // 12.34
3. Tuple Decomposition
튜플에 저장되어 있는 멤버를 개별 상수나 개별 변수에 따로 저장하는 방식을 말합니다.
// 문법
// let (name1, name2, ...) = tupleExpr
// var (name1, name2, ...) = tupleExpr
// 상수, 변수의 수는 tuple의 멤버 수와 동일해야 함
let d = ("<html>", 200, "OK", 12.34)
// let body = d.0
// let code = d.1
// let message = d.2
// let size = d.3
let (body, code, message, size) = d
body // <html>
code // 200
message // OK
size // 12.34
// 분해하고 싶지 않은 멤버는 _로 변경하여 처리할 수 있음
// ex) let (body, code, message, _) = d
4. Tuple Matching
switch 문의 경우 tuple matching 을 지원하기 때문에 같은 코드라도 if 문보다 더 간결하게 쓸 수 있습니다.
var resolution = (3840.0, 2160.0)
if resolution.0 == 3840 && resolution.1 == 2160 {
print("4K")
}
// 위와 같은 코드를 switch 문으로 변경
switch resolution {
// interval matching 도 사용 가능
case (3840...4096, 2160):
print("4K")
default:
break
}
resolution = (1920.0, 1080.0)
switch resolution {
// wild card 문법도 사용 가능
case (_, 1080):
print("1080p")
default:
break
}
// value binding 활용
switch resolution {
case let(w, h) where w / h == 16.0 / 9.0:
print("16:9")
default:
break
}
// 결과
// 4K
// 4K
// 1080p
// 16:9
지금까지 Tuple 에 대해 알아보았습니다.
'swift > 문법' 카테고리의 다른 글
12. Swift 문법 - Strings and Characters 2 (0) | 2020.10.19 |
---|---|
11. Swift 문법 - Strings and Characters 1 (0) | 2020.10.19 |
09. Swift 함수 - Closures (0) | 2020.10.17 |
08. Swift 문법 - Functions (0) | 2020.10.17 |
07. Swift 문법 - Optionals (0) | 2020.10.13 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Combination
- array
- spring
- 에라토스테네스의 체
- 프로그래머스
- Baekjoon
- 조합
- java
- 순열
- ECR
- BFS
- EC2
- CodeCommit
- 소수
- 수학
- map
- sort
- SWIFT
- programmers
- permutation
- DFS
- string
- CodePipeline
- Dynamic Programming
- ionic
- Algorithm
- CodeDeploy
- search
- cloudfront
- AWS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함