Tuples
튜플은 두개 이상의 값을 저장할 수 있으며 서로 다른 타입의 값을 저장할 수 있다.
배열과는 반대로 튜플의 길이는 고정되어 있다.
// 기본 문법
(exp1, exp2, ...) // exp1, exp2는 Tuple Member로 부른다.
// 호출 방법
tuple.n
가상의 데이터 저장해보기
let data = ("AAA", 111, 10.0) // (String, Int, Float)
위 코드처럼 서로 다른 타입의 값을 튜플에 저장할 수 있다.
튜플에 저장된 값에 접근하기
let data = ("AAA", 111, 10.0) // (String, Int, Float)
// 접근하기
data.0
data.1
data.2
튜플에 저장된 값 변경하기
let data = ("AAA", 111, 10.0)
data.0 = "BBB" // 상수로 선언되어 있기 때문에 Error!!
var data = ("AAA", 111, 10.0)
data.0 = "BBB" // 변경 완료
Named Tuple
튜플 멤버에 이름을 붙이면 가독성이 높아지며 기존에 인덱스로 접근하는 방식에서 멤버 이름으로 접근할 수 있다.
// 기본 문법
(name: exp1, name: exp2, ...)
// 호출 방법
tuple.memberName
튜플 멤버에 이름 붙이기
let tuple = (a: "AAA", b: 111, c: 10.0)
tuple.a // "AAA"
tuple.b // 111
tuple.c // 10.0
튜플 분해(Tuple Decomposition)
// 기본 문법
let (name1, name2, ...) = tupleExpr
var (name1, name2, ...) = tupleExpr
개별 상수에 저장하기
let tuple = ("AAA", 111, 10.0)
let a = tuple.0 // "AAA"
let b = tuple.1 // 111
let c = tuple.2 // 10.0
let tuple = (a: "AAA", b: 111, c: 10.0)
let a = tuple.a // "AAA"
let b = tuple.b // 111
let c = tuple.c // 10.0
위 코드처럼 개별적으로 저장하면 번거롭기 때문에 Decomposition 문법을 사용하여 저장하면 간단하게 저장할 수 있다.
let tuple = ("AAA", 111, 10.0)
let (a,b,c) = tuple
print(a) // "AAA"
주의해야할 점은 tuple에 저장된 튜플의 수와 (a,b,c) 이름의 수가 같아야 한다.
Tuple Matching
튜플에 저장된 값을 매칭할 수 있다.
let number = (100, 200)
if number.0 == 100 && number.1 == 200 {
print("OK")
}
if 문으로 튜플에 저장된 값을 매칭시키는것도 문제 없이 가능하다.
하지만 새로운 조건이 추가될 때마다 else - if로 계속 추가해주어야 하기 떄문에 코드가 복잡해지므로 비효율적이다.
그래서 switch문으로 간단하게 값을 매칭시킬수 있다.
let Point = (1, 1)
switch Point {
case (0, 0):
print("\(Point) 원점")
case (_, 0):
print("\(Point) x축에 있다.")
case (0, _):
print("\(Point) y축에 있다.")
case (-2...2, -2...2):
print("\(Point) 범위 안에 있다")
default:
print("\(Point) 범위 밖에 있다.")
}'Swift > Swift문법' 카테고리의 다른 글
| Swift문법 - String Options (0) | 2023.02.19 |
|---|---|
| Swift문법 - String and Characters (0) | 2023.02.12 |
| Swift문법 - Closure (0) | 2023.01.28 |
| Swift문법 - Functions (0) | 2023.01.22 |
| Swift문법 - Optional (1) | 2023.01.15 |