안녕하십니까 공부하는 개발자입니다.
오늘 들고온 포스팅은 Tuple입니다.
Tuple이란 자바에도 같은 이름이 있지만 역할이 조금 다릅니다.
여기서 스위프트에서 튜플은 list같은 느낌으로 데이터를 저장합니다.
tuple 은 두개 이상의 값을 저장할 수있는 컴파운드타입 입니다.
이전에 포스팅 했던 하나의 값을 저장할 수 있는 타입은 스칼라타입이라한다.
데이터 저장 방식은
(expr1, expr2, ...)
이러한 형식을 띄우게 되어있습니다.
여기서 expr1과 같은 데이터를 Tuple Member라고 합니다.
또한 데이터가 다른 값이여도 저장이 가능합니다.
1
|
let data = ("<html>", 200, "Ok", 12.34)
|
cs |
이런식으로 String, Int, String, Double타입을 섞어도 데이터가 저장이 가능합니다.
이러한 값을 불러올때는 explicit member expression(점문법)을 사용하여 값을 부를 수 있습니다.
1
|
data.0 //<html>
|
cs |
이런식으로 사용이 가능한데 뒤에 붙이는 index의 경우 0부터 시작하는 관례를 지킨다.
다른 방법으로는 선언을 할때 이름을 붙이는 방법을 사용할 수 있다.
이러한 형식을 named tuple이라고 하며 아규먼트레이블을 붙이는 것과 유사하고
튜플멤버에 이름을 붙여 가독성을 높인다
1
|
let data = (body: "<html>", statusCode: 200, statusMessage: "Ok", dataSize: 12.34)
|
cs |
이러한 형식을 사용할 때는 코드가 길어지는 단점이 생기지만 호출할때는 좀 더 직관적이며 가독성을 높일 수 있다는 장점이 있다.
1
|
data.body //<html>
|
cs |
하지만 이러한 형식 또한 Tuple Member가 늘어난다면 많이 어려워 질것이다.
그래서 Tuple Decomposition(튜플 분해문법)을 이용한다.
방법은 간단하다.
1
|
let (body, code, message, size) = data
|
cs |
이런식으로 선언한다면
1
2
3
4
|
let body = data.0
let code = data.1
let message = data.2
let size = data.3
|
cs |
이러한 코드와 완전히 같은 코드가 된다.
또한 만약 중간에 내가 원하지 않는 값이 있다면 와일드카드를 이용하여 값을 넣어주면 와일드카드의 값은 분해되지 않는다.
다만 선언되어있는 tuple member의 수와 선언할때의 변수명의 수는 항상 같아야한다.
또한 swift에서는 switch문의 case에서 tuple을 적용하여 조건문을 간단히 할 수 있다.
'Ios > Swift' 카테고리의 다른 글
[Swift] String Basics 문자열 기본 (0) | 2022.06.20 |
---|---|
[Swift] String Indices String타입의 index (0) | 2022.06.19 |
[Swift] Closures 스위프트의 람다 (0) | 2022.06.10 |
[swift] Argument Label 스위프트에 신기했던 문법 (0) | 2022.06.09 |
[Swift] Function - 함수 (0) | 2022.06.08 |