[swift] Tuple

orzr·2023년 4월 6일
0

Tuple

튜플은 데이터를 나열하므로써 생성이 가능하다. 같은 타입일 필요는 없으며 개수 또한 자유롭게 정할 수 있다. 타입 이름이 따로 지정되어 있지 않아 프로그래머가 원하는대로 타입을 생성할 수 있다.

+ tuple도 데이터 타입의 한 종류이기 때문에 한 번 선언하면 이후에 수정이 불가능하다.

접근 방법

var person: (String, Int, Double) = ("orzr", 25, 162.5)

'orzr'에 접근하기 위해서는 person.0 과 같이 인덱스를 사용하여 데이터를 사용할 수 있다.
하지만 각각의 데이터가 무엇을 의미하는지 유추하기 어렵기 때문에 다음 예시와 같이 사용하는 것이 더 바람직하다.

Named tuple

var person: (name: String, age: Int, height: Double) = ("orzr", 
25, 162.5)

이처럼 멤버 앞에 이름을 붙여줌으로써 데이터가 의미하는 것이 무엇인지 정확이 인지할 수 있다. 또한 person.name과 같이 인덱스가 아닌 멤버의 이름을 통해 데이터에 접근할 수 있다. 하지만 같은 모양의 튜플을 여러번 사용하려면 약간의 불편함이 생길 수 있다. 이럴 때 타입 별칭을 사용하여 더욱 깔끔하고 안전하게 코드를 작성할 수 있다.

// 이미 존재하는 데이터 타입에 임의로 별칭 부여
typealias PersonTuple: (name: String, age: Int, height: Double)

let orzr: PersonTuple = ("orzr", 25, 162.5)
let dorothy: PersonTuple = ("도로시, 11, 137)

위 예시처럼 typealias를 사용하면 동일한 모양의 튜플을 사용하기에 용이하다!

Decomposition

튜플을 사용하다보면 상수나 변수에 튜플 값을 할당해주어야 하는 경우가 생길 수 있다.

let university: (String, Int, Bool) = ("한국대", 2, false)

let major = university.0
let grade = university.1
let isPlural = university.2

이런 식으로 값을 할당할 수 있지만 꽤나 귀찮은 방법이다. 이럴 때 decomposition 문법을 사용하면 더욱 깔끔하게 값을 할당해 줄 수 있다.

let (major, grade, isPlural) = university

let (major, grade, _) = university

상수나 변수의 갯수와 튜플의 멤버 수는 같아야한다! 만약 사용하지 않는 상수나 변수가 있을 경우 wildcard(_)를 사용해주면 된다.

profile

0개의 댓글