Swift랑 친해지기/Swift문법정리

[Swift] Tuples (튜플)

데브킹덕 2022. 8. 16. 00:08

튜플언제 사용하나??

- 여러개의 데이터를 열거하여 담아두는데 사용 

 

 

 

 

하나의 상수에 두개이상의 값을 저장하는게 불가능함

- Int나 String 자료형들은 하나의 값만 저장하는 스칼렛 타입이라 그럼 

 

 

튜플은 컴파운드 타입으로 다음과 같이 두개이상의 값을 저장할 수 있음

// 튜플 사용법
(expr1,expr2,expr...) 

expr는 각각 tuple Member임

 

튜플은 (Int, String, Double)각각의 자료형으로 저장한다.

값에 접근하기 위해 접문법(Expicit Member Expression)을 사용하는데 

위에 보이는 0 , 1, 2 는 튜플의 Index이다.

튜플의 값에 접근할때 예제

 

이때 상수일경우 값을 바꿀 수 없으며 변수일때만 값을 변경할 수 있다.

튜플은 값형식임(새로운 변수에 저장하면 값이 복사됨)

tupleExample이라는 변수에 extuple라는 튜플을 저장하면 복사된다. 

tupleExample의 값을 변경하면 tupleExample의 값은 변경되지만 exTuple은 변경되지 않는 것을 볼 수 있다.

 

이렇게 본 튜플은 Index로 접근해야만 하므로 가독성 측면에서 단점이 있고 Tuple member에 이름이 없기때문에

UnNamed Tuple들임

이와 반대로 멤버이름을 통해 어떤것인지 유추가능 할 수 있는 Named Tuple도 있음

 

 

 

 

NamedTuple

NamedTuple 예제

//Named Tuple 사용법
(name1:expr1,name2:expr2,name3:expr3...)


//인덱스값이 아닌 tuple member의 이름을 사용
tupel.memberName

 

 

Tuple Decompositon (튜플 분해)

튜플에 저장되어 있는 멤버를 개별상수, 변수에 따라 저장할 수 있음

 

각각 이름을 지정해주어 하나하나 지정할 수도 있고

한번에 분해하여 저장할도 있음

단일값으로 분해되어 앞에서부터 순서대로 분해됨

 

와일드카드를 이용해 생략도 가능함 

wildcard를 이용해 생략

 

 

조건문에서 튜플 사용해버리기~

Tuple은 보통 조건문에서 많이 사용됨

if문 사용했을때

if문에서 튜플 사용했을때에는 가독성이 떨어짐 

switch문에서 튜플 예제

Interval matching

wildcard

value binding을 사용한 예제이다. 

문자열보다는 숫자가 적합해보이긴 하다. 

잘 파악해두어 적재적소에 사용하면 좋을듯하다.