튜플

쏘스야·2023년 3월 31일
0

튜플이란

원하는 연관된 데이터의 조합으로 어떤 형태든 만들 수 있는 타입

import UIKit

let tuples = (1,2,3)
type(of: tuples)

let soya = ("조소야", 27, "개발자")
type(of: soya)

// 연관된 값(튜플) 가각 데이터의 접근
print(soya.0)
print(soya.1)
print(soya.2)



// 네임드 튜플

let nameTuple = (name: "소야", age:27)

print(nameTuple.name)
print(nameTuple.age)


// 튜플의 분해(decomposition)

let (first, second, third) = (1,2,3)

print(first)
print(second)
print(third)


// 타입 치환

typealias twoType = (Int, String)

let jo:twoType = (27, "소야")

print(jo)


// 튜플 값을 비교
// 튜플은 값을 비교할 수 있다.
// 첫번째 값을 비교 후 다음 값을 비교한다.
(1, "asdf") < (3,"qwer")
(8, "zxcv") > (7, "wert")
(2, "asdf") == (2, "asdf")

// 참과 거짓이 있는 경우에는 에러
//("asdf", false) < ("asdf",true)

튜플의 활용

// 튜플의활용

let man = (name:"soya", age:27)

if man.0 == "soya", man.1 == 27 {
    print("남자의 이름은 \(man.0) 이고 나이는 \(man.1) 입니다.")
}

if man == ("soya", 27){
    print("남자의 이름은 \(man.0) 이고 나이는 \(man.1) 입니다.")
}

switch man {
case ("soya", 27):
    print("남자의 이름은 \(man.0) 이고 나이는 \(man.1) 입니다.")
default:
    break
}



// 튜플 바인딩

var xy1 = (5, 0)


switch xy1 {
case (let xy, 0), (0, let xy):
    print("x축 또는 y축에 위치하며, \(xy)거리 만큼 떨어져 있음.")
default:
    print("축위에 있지 않습니다.")
    break
}

switch xy1 {
case (let x,let y) where x == y :
    print("(\(x),\(y))의 좌표는 y = x 1차 함수 그래프 위에 있다.")
case (let x, let y) where x == -y:
    print("(\(x),\(y))의 좌표는 y = -x 1차 함수 그래프 위에 있다.")
case (let x, let y):
    print("(\(x),\(y))의 좌표는 y = x , y = -x 그래프가 아닌 임의의 지점에 있다.")
}
profile
개발자

0개의 댓글