Swift Language
튜플
수색…
소개
튜플 유형은 괄호로 묶인 쉼표로 구분 된 유형 목록입니다.
이 유형 목록은 요소의 이름을 가질 수 있으며 이러한 이름을 사용하여 개별 요소의 값을 나타낼 수 있습니다.
요소 이름은 식별자 다음에 콜론 (:)이옵니다.
공통 사용 -
함수의 반환 유형으로 튜플 유형을 사용하여 함수가 여러 값을 포함하는 단일 튜플을 반환하도록 할 수 있습니다.
비고
튜플은 값 유형으로 간주됩니다. 튜플에 대한 추가 정보는 developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html 에서 확인할 수 있습니다.
튜플이란 무엇입니까?
튜플은 여러 값을 단일 복합 값으로 그룹화합니다. 튜플 내의 값은 모든 유형이 될 수 있으며 서로 동일한 유형일 필요는 없습니다.
튜플은 값의 양을 그룹화하여 만듭니다.
let tuple = ("one", 2, "three")
// Values are read using index numbers starting at zero
print(tuple.0) // one
print(tuple.1) // 2
print(tuple.2) // three
또한 튜플이 정의 될 때 개별 값의 이름을 지정할 수 있습니다.
let namedTuple = (first: 1, middle: "dos", last: 3)
// Values can be read with the named property
print(namedTuple.first) // 1
print(namedTuple.middle) // dos
// And still with the index number
print(namedTuple.2) // 3
변수로 사용할 때 이름을 지정할 수도 있고 내부에 선택적 값을 가질 수도 있습니다.
var numbers: (optionalFirst: Int?, middle: String, last: Int)?
//Later On
numbers = (nil, "dos", 3)
print(numbers.optionalFirst)// nil
print(numbers.middle)//"dos"
print(numbers.last)//3
개별 변수로 분해
튜플은 다음 구문을 사용하여 개별 변수로 분해 할 수 있습니다.
let myTuple = (name: "Some Name", age: 26)
let (first, second) = myTuple
print(first) // "Some Name"
print(second) // 26
튜플에 이름없는 속성이 있는지 여부에 관계없이이 구문을 사용할 수 있습니다.
let unnamedTuple = ("uno", "dos")
let (one, two) = unnamedTuple
print(one) // "uno"
print(two) // "dos"
밑줄 ( _
)을 사용하면 특정 속성을 무시할 수 있습니다.
let longTuple = ("ichi", "ni", "san")
let (_, _, third) = longTuple
print(third) // "san"
함수의 반환 값으로서의 튜플
함수는 튜플을 반환 할 수 있습니다.
func tupleReturner() -> (Int, String) {
return (3, "Hello")
}
let myTuple = tupleReturner()
print(myTuple.0) // 3
print(myTuple.1) // "Hello"
매개 변수 이름을 지정하면 반환 값에서 사용할 수 있습니다.
func tupleReturner() -> (anInteger: Int, aString: String) {
return (3, "Hello")
}
let myTuple = tupleReturner()
print(myTuple.anInteger) // 3
print(myTuple.aString) // "Hello"
타이프라일을 사용하여 튜플 유형 이름 지정하기
경우에 따라 코드 전체의 여러 위치에서 동일한 튜플 유형을 사용하려고 할 수 있습니다. 이는 특히 터플이 복잡한 경우에 지저분해질 수 있습니다.
// Define a circle tuple by its center point and radius
let unitCircle: (center: (x: CGFloat, y: CGFloat), radius: CGFloat) = ((0.0, 0.0), 1.0)
func doubleRadius(ofCircle circle: (center: (x: CGFloat, y: CGFloat), radius: CGFloat)) -> (center: (x: CGFloat, y: CGFloat), radius: CGFloat) {
return (circle.center, circle.radius * 2.0)
}
둘 이상의 장소에서 특정 튜플 유형을 사용하는 경우 typealias
키워드를 사용하여 튜플 유형의 이름을 지정할 수 있습니다.
// Define a circle tuple by its center point and radius
typealias Circle = (center: (x: CGFloat, y: CGFloat), radius: CGFloat)
let unitCircle: Circle = ((0.0, 0.0), 1)
func doubleRadius(ofCircle circle: Circle) -> Circle {
// Aliased tuples also have access to value labels in the original tuple type.
return (circle.center, circle.radius * 2.0)
}
그러나 너무 자주이 작업을 수행하는 경우 struct
대신 사용해보십시오.
값 바꾸기
튜플은 임시 변수를 사용하지 않고 2 개 이상의 변수 사이에서 값을 교환하는 데 유용합니다.
2 개의 변수가있는 예
주어진 2 개의 변수들
var a = "Marty McFly"
var b = "Emmett Brown"
우리는 값을 쉽게 교환 할 수 있습니다.
(a, b) = (b, a)
결과:
print(a) // "Emmett Brown"
print(b) // "Marty McFly"
4 개의 변수가있는 예
var a = 0
var b = 1
var c = 2
var d = 3
(a, b, c, d) = (d, c, b, a)
print(a, b, c, d) // 3, 2, 1, 0
스위치의 사례 인 튜플
스위치에 튜플 사용
let switchTuple = (firstCase: true, secondCase: false)
switch switchTuple {
case (true, false):
// do something
case (true, true):
// do something
case (false, true):
// do something
case (false, false):
// do something
}
또는 열거 형 (Enum)과 결합하여 예를 들어 크기 클래스 사용 :
let switchTuple = (UIUserInterfaceSizeClass.Compact, UIUserInterfaceSizeClass.Regular)
switch switchTuple {
case (.Regular, .Compact):
//statement
case (.Regular, .Regular):
//statement
case (.Compact, .Regular):
//statement
case (.Compact, .Compact):
//statement
}