let person = ("John", 25)
// 타입 명시적 지정
let point: (Int, Int) = (3, 5)
튜플의 각 요소는 인덱스를 사용하여 접근할 수 있습니다.
let person = ("John", 25)
print(person.0) // "John" 출력
print(person.1) // 25 출력
요소에 이름을 지정하여 더 가독성 있게 접근할 수도 있습니다.
let person = (name: "John", age: 25)
print(person.name) // "John" 출력
print(person.age) // 25 출력
함수나 메소드에서 여러 값을 반환하고 싶을 때, 임시적으로 여러 값을 묶어 사용하고 싶을 때 등에 활용됩니다.
가독성 감소: 튜플은 요소의 의미를 명시적으로 표현하지 않고, 순서에 의존하여 값을 접근합니다. 이는 코드의 가독성을 저하시킬 수 있으며, 튜플의 요소가 많거나 복잡한 구조일수록 가독성 문제가 더 심해질 수 있습니다.
타입 안정성 부족: 튜플은 서로 다른 타입의 값을 묶을 수 있어 편리하지만, 컴파일러가 요소의 타입을 체크해주지 않습니다. 따라서 튜플에 잘못된 타입의 값을 할당하는 실수를 방지하기 위해 추가적인 주의가 필요합니다.
요소 수정 제한: 튜플은 생성된 후에는 요소를 개별적으로 수정할 수 없습니다. 튜플의 값을 변경하려면 새로운 튜플을 생성하여 전체 값을 대체해야 합니다. 이는 튜플이 불변성(immutable)을 가지는 데이터 구조라는 한계를 의미합니다.
구조적 제한: 튜플은 고정된 크기와 순서를 가지고 있기 때문에, 튜플에 새로운 요소를 동적으로 추가하거나 삭제하는 것이 불가능합니다. 만약 요소의 개수나 구조가 동적으로 변경되어야 하는 경우에는 클래스나 구조체를 사용하는 것이 더 적합할 수 있습니다.