1. 튜플

  • 원하는 연관된 데이터의 조합으로 만들 수 있는 타입이다.
  • 변수를 선언과 동시에 해당 멤버(데이터의 종류 및 개수)가 결정되므로 추가/삭제는 불가능하다.
  • var로 선언하면 요소 교체는 가능하다.
  • 서로 다른 타입을 묶어서 반환하거나 전달할 때 사용한다.

    // 좌표
    let position: (Int, Int) = (1, 2) // position.0, position.1로 접근 가능
      print(position.0)
      print(position.1)
      
    // 3차원 공간
    let position3D: (Int, Int, Int) = (1, 2, 3)
    print(position3D.0)
    print(position3D.1)
    print(position3D.2)
      
    // 태입 앨리어스를 이용하여 튜플의 묶음값을 치환해서 사용가능(이 자체가 하나의 타입)
    typealias GridPoint = (Int, Int)	
    let grid: GridPoint = (1, 2)
    print(grid.0)
    print(grid.1)
      
    

Named Tuple(이름이 매겨진 튜플)

  • 데이터의 각 요소에 이름을 붙일 수 있다.

    let iOS = ("Swift", "6.0")
    let iOS2 = (language: "Swift", version: "6.0")
      
    print(iOS.0, iOS.1)
    print(iOS2.0, iOS2.1)
    print(iOS2.language, iOS2.version)
      
    // Swift 6.0
    // Swift 6.0
    // Swift 6.0
      
    

Decomposition(튜플의 분해)

  • 튜플의 각 요소를 상수/변수화 가능하다. (바인딩)
  • 특징: 데이터를 분해해서 활용할 수 있다.

    let (name, age, address) = ("홍길동", 20, "서울")
    print(name)
    print(address)
    

튜플과 조건문 활용

  • if문 활용

    let iOS = ("Swift", "6.0")
      
    if iOS.0 == "Swift" && iOS.1 == "6.0" {
      	print("Swift 버전 \(iOS.1)")
    } 
    
    if iOS == ("Swift", "6.0") {
        print("Swift 버전 \(iOS.1)")
    }
    
    
  • switch문 활용
  • 변수의 케이스에 따라 구분할 때 주로 사용한다.

    switch iOS {
    case ("Swift", 5):
        print("스위프트 버전 5")
    case ("Swift", 6):
      	print("스위프트 버전 6")
    default:
        break
    }
    
  • 튜플의 switch문 바인딩
  • 각 케이스 내에서 튜플의 각 요소를 활용할 때 주로 사용한다.

    switch coordinate {
    case (let x, let y):
        print("좌표는 (\(x), \(y)) 입니다.")
    default:
        break
    }
    
  • 튜플의 switch문 바인딩/where절
  • 특정 조건에 따라 튜플 케이스를 처리하고 싶을 때 주로 사용한다.

    switch coordinate {
    case let (x, y) where x == y:
        print("좌표는 (\(x), \(y)) 입니다.")
    default:
        break
    }
    

튜플을 사용하는 이유 with function

  • 함수는 원칙적으로 리턴값이 하나만 존재하여 여러 값을 반환할 수 없다.
  • 하지만 튜플을 리턴하면 묶음 값으로 반화할 수 있다.

    func tuple() -> (String, Int) {
        return ("Index", 26)
    }
    print(tuple())
    

Leave a comment