원하는 연관된 데이터의 조합으로 어떤 형태든 만들 수 있는 타입
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 그래프가 아닌 임의의 지점에 있다.")
}