Swift

Tuple

dion_K 2020. 11. 17. 14:19
728x90

안녕하세요:)

 

오늘은 Tuple에 대해서 알아보도록 할게요!!!!

 

1. Tuple

  • 튜플은 두 개 이상의 값을 저장할 수 있습니다.
  • 서로 다른 형식의 값을 저장하는 것도 가능합니다.
  • 튜플 멤버에 접근할 때는 점문법을 사용합니다.
  • 튜플 멤버의 값을 변경할 때는 상수가 아닌 변수로 선언해야 합니다.
  • 새로운 멤버의 추가, 삭제는 불가능합니다.
(expr1, expr2,...) // expr1 -> Tuple Member 튜플에 저장된 하나의 값은 Tuple Member라고 합니다.

var tuple = (20, "Hi", 12.34, "Hello")
tuple.0 // 20
tuple.1 // Hi
tuple.2 // 12.34
tuple.3 // Hello

tuple.0 = 400

2. Named Tuple

  • 튜플 멤버에 이름을 붙이면 가독성이 높아집니다.
let namedTuple = (number: 20, str: "Hi", point: 12.34)

namedTuple.0 // 20
namedTuple.number // 20
namedTuple.str // Hi
namedTuple.point // 12.34

3. Tuple Decomposition

  • 튜플에 저장되어 있는 멤버를 개별 상수나 변수에 따로 저장할 수 있습니다.
  • 이름의 수는 튜플에 저장된 멤버의 수와 같아야 합니다.
  • 와일드카드 패턴으로 생략할 수 있습니다.
let (name1, name2, ...) = tupleExpr 
var (name1, name2, ...) = tupleExpr

let (number, str, point) = namedTuple

4. Tuple Matching

let resolution = (3840.0, 2160.0) // 해상도

if resolution.0 == 3840 && resolution.1 == 2160 {
    print("4K")
}

switch resolution {
case (3840, 2160):
    print("4K")
default:
    break
} // 결과는 동일합니다.

// Interval 매칭도 가능합니다.

switch resolution {
case let(w, h) where w / h == 16.0 / 9.0:
    print("16:9")
case (_, 1080):
    print("1080p")
case (3840 ... 4096, 2160):
    print("4K")
default:
    break
}
// 코드가 단순해지고, Value Binding을 사용할 수 있습니다.
728x90