Tuples
Tuples
- 두개 이상의 값을 저장할 수 있다.
- 서로 다른 타입의 값을 저장할 수 있다.
- 튜플의 길이는 고정되어있다. 배열과 반대
기본 문법 📝
(expr1, expr2, ...)
expr1,expr2는 Tuple Member로 부른다.
tuple.n // 호출 방법
가상의 데이터 저장해보기
let data = ("park",28,60.5)
위 코드의 타입을 보면 (String, Int, Double)로 서로 다른 타입의 값을 튜플에 저장할 수 있다.
튜플에 저장된 값에 접근하기
let data = ("park",28,60.5)
data.0
data.1
data.2
튜플에 저장된 값에 접근하기위해서는
tutle.n
형식으로 접근할 수 있다. data 상수에서 저장된 값에 접근하기 위해서는data.0
data.1
data.2
로 접근할 수 있다.
튜플에 저장된 값 바꾸기
let data = ("park",28,60.5)
data.0 = "Kim" // 에러 발생
var mutableTuple = data
mutableTuple.0 = "Kim"
위 코드처럼 값을 바꾸려하면 data가 상수로 선언되어 있기 때문에 에러가 발생한다. 변수를 새로 생성하고 값을 바꿔주면 정상적으로 바뀐다.
Named Tuple
- 튜플 멤버에 이름을 붙이면 가독성이 높아진다.
- 기존 인덱스로 접근하는 방식에서 멤버이름으로 접근할 수 있다.
기본 문법 📝
(name: expr1, name: expr2, ...)
tuple.memberName // 호출 방법
튜플멤버에 이름 붙이기
let named = (a: "park", b: 28, c: 60.5, d: 250)
named.a // "park"
named.b // 28
named.c // 60.5
named.d // 250
튜플 멤버가 어떤 값을 가지고 있는지 직관성이 높아졌다.
튜플 분해 (Tuple Decomposition)
- 튜플에 저장된 멤버를 개별 상수나 개별 변수에 저장할 수 있다.
기본 문법 📝
let (name1, name2, ...) = tutpeExpr
var (name1, name2, ...) = tutpeExpr
개별 상수에 저장하기
let named = ("park", 28, 60.5, 250)
let a = named.0 // "park"
let b = named.1 // 28
let c = named.2 // 60.5
let d = named.3 // 250
let named = (a: "park", b: 28, c: 60.5, d: 250)
let aa = named.a
let bb = named.b
let cc = named.c
let dd = named.d
위 코드와 같이 개별적으로 저장하면 번거롭다.
Decomposition 문법을 사용하여 저장하면 간단하게 저장할 수 있다.
let named = ("park", 28, 60.5, 250)
let (a,b,c,d) = named
print(a) // "park"
named에 저장된 튜플의 수와 a,b,c,d 이름의 수가 같아야 한다.
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) 범위 밖에 있다.")
}
위 코드는 특정 범위안에 좌표가 있는지 확인하는 코드로 원하는 값만 비교하려면
_
와일드카드패턴을 사용하면된다.(와일드카드 패턴을 사용하게되면 그 값을 무시한다),case (-2...2, -2...2):
처럼 범위도 지정하여 비교할 수 있다.
Author And Source
이 문제에 관하여(Tuples), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kiwoo93/Tuples저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)