계발자 블로그

[Swift] Tuple(튜플) 본문

Swift

[Swift] Tuple(튜플)

더구더구 2024. 5. 21. 15:22

Tuple

튜플은 swift에서 여러 개의 값을 하나의 값으로 묶는 데 사용되는 데이터 구조입니다.

튜플은 서로 다른 타입의 값들을 포함할 수 있으며, 값을 순서대로 저장합니다.

 

튜플의 기본 사용법

var tuple: (String, Int, Bool) = ("Kim", 100, true)
var tuple2 = ("Kim", 100, 1.5)

var person = (name: "Kim", age: 28, job: "president")

 

위의 코드에서 tuple 변수는 타입을 명시 한 문자열, 정수, boolean형으로 이루어진 값입니다.

Tuple 역시 타입추론이 가능하기 때문에 타입을 직접 명시하지 않아도 괜찮습니다.

또한 Tuple은 person 변수처럼 정의할 때 각 요소에 이름을 지정할 수 있습니다.

 

튜플 값에 접근하는 법

1. 인덱스를 사용하여 접근

person.0 // "Kim"
person.1 // 28

 

2. 지정한 이름으로 접근

person.name // "Kim"
person.job // "president"

 

다양한 튜플의 활용법

 

switch 문의 활용

let 해상도 = (3840.0, 2160.0)

func 해상도알려주는함수 (가로: Double, 세로: Double) -> String {
    let 해상도 = (가로, 세로)
    switch 해상도 {
    case(3840...10000, _):
        return "와이드모니터 같은데요?"
    case (3840.0, 2160.0):
        return "4k"
    case (2560, 1440) :
        return "QHD"
    case (1920, 1080) :
        return "FHD"
    case let (x, y) where x == y:
        return "정사각형 모니터...?"
    case let (x, y) where x < y:
        return "가로랑 세로를 잘못 입력하신거 같아요"
    default:
        return "이상한데요?"
    }
}

print(해상도알려주는함수(가로: 2160, 세로: 5000))

 

배열 안의 튜플

튜플을 활용하면, 더 다양한 타입의 데이터 타입을 한 배열에 넣을 수 있습니다.

var catArr : [(name: String, age: Int)] = []

catArr.append((name : "까까", age : 7))
catArr.append((name : "루", age : 4))

print(catArr)

print(catArr[0].name) // 까까

for (index, element) in catArr.enumerated() {
    print("\(index + 1)번째 고양이는 \(element.name)이고, 나이는 \(element.age)살 입니다.")
}
/*
1번째 고양이는 까까이고, 나이는 7입니다.
2번째 고양이는 루이고, 나이는 4입니다.
*/

간단한 유저 정보 등을 배열 속에 넣어서 관리할 때 유용하게 사용할 수 있을 것 같습니다.

튜플 안에 배열

let 우리고양이 = (name: "고양이", color: "Black", age: 7, likes: ["츄르", "냉장고", "캣폴"])

print(우리고양이.likes) // ["츄르", "냉장고", "캣폴"]

for 좋아하는거 in 우리고양이.likes {
    print(좋아하는거)
}

이처럼 튜플 안에 배열을 넣어서 디테일한 정보를 담을 수 있습니다.

튜플 안에 함수

func getName () -> String {
    return "김대성"
}

func getAge () -> Int {
    return 99
}

let userInfo = (name : getName(), age : getAge())

print(userInfo.name, userInfo.age) // 김대성 99

func 주식계산기 (name: String, price: Double, amount: Double) -> (name: String, value: Double) {
    return (name, price * amount)
}

let 삼성전자 = 주식계산기(name: "삼성전자", price: 67400, amount: 50)
let 현대자동차 = 주식계산기(name: "현대자동차", price: 186000, amount: 20)
let 네이버 = 주식계산기(name: "네이버", price: 286500, amount: 10)

let 내주식 = (삼성전자, 현대자동차, 네이버)

print("\(내주식.0.name)을 \(내주식.0.value)만큼 들고 있습니다.")

함수 값을 튜플에 담는 것 역시 가능합니다.

 

 

 

출처: https://velog.io/@ds-k/Swift-튜플Tuple의-활용

 

'Swift' 카테고리의 다른 글

[Swift] Class와 Struct  (0) 2024.05.24
[Swift] Collection  (0) 2024.05.20