KWiOS
KWiOS0101
KWiOS
  • 분류 전체보기 (108)
    • Algorithm (41)
      • 이코테 (14)
      • 이코테 문제풀이 (21)
      • 프로그래머스 (6)
    • CS (1)
      • 모두를 위한 컴퓨터 과학(CS50 2019) (0)
    • iOS (15)
    • Swift (36)
      • Swift문법 (32)
      • 기타 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 6

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
KWiOS

KWiOS0101

Swift/Swift문법

Swift문법 - Tuples

2023. 2. 5. 04:11

Tuples

튜플은 두개 이상의 값을 저장할 수 있으며 서로 다른 타입의 값을 저장할 수 있다.

배열과는 반대로 튜플의 길이는 고정되어 있다.

// 기본 문법
(exp1, exp2, ...) // exp1, exp2는 Tuple Member로 부른다.

// 호출 방법
tuple.n

 

가상의 데이터 저장해보기 

let data = ("AAA", 111, 10.0) // (String, Int, Float)

위 코드처럼 서로 다른 타입의 값을 튜플에 저장할 수 있다.

 

튜플에 저장된 값에 접근하기

let data = ("AAA", 111, 10.0) // (String, Int, Float)

// 접근하기
data.0
data.1
data.2

 

튜플에 저장된 값 변경하기

let data = ("AAA", 111, 10.0)
data.0 = "BBB" // 상수로 선언되어 있기 때문에 Error!!

var data = ("AAA", 111, 10.0)
data.0 = "BBB" // 변경 완료

Named Tuple

튜플 멤버에 이름을 붙이면 가독성이 높아지며 기존에 인덱스로 접근하는 방식에서 멤버 이름으로 접근할 수 있다.

// 기본 문법
(name: exp1, name: exp2, ...)

// 호출 방법
tuple.memberName

 

튜플 멤버에 이름 붙이기

let tuple = (a: "AAA", b: 111, c: 10.0)

tuple.a // "AAA"
tuple.b // 111
tuple.c // 10.0

튜플 분해(Tuple Decomposition)

// 기본 문법
let (name1, name2, ...) = tupleExpr
var (name1, name2, ...) = tupleExpr

 

개별 상수에 저장하기

let tuple = ("AAA", 111, 10.0)

let a = tuple.0 // "AAA"
let b = tuple.1 // 111
let c = tuple.2 // 10.0


let tuple = (a: "AAA", b: 111, c: 10.0)

let a = tuple.a // "AAA"
let b = tuple.b // 111
let c = tuple.c // 10.0

위 코드처럼 개별적으로 저장하면 번거롭기 때문에 Decomposition 문법을 사용하여 저장하면 간단하게 저장할 수 있다.

let tuple = ("AAA", 111, 10.0)

let (a,b,c) = tuple
print(a) // "AAA"
주의해야할 점은 tuple에 저장된 튜플의 수와 (a,b,c) 이름의 수가 같아야 한다.

Tuple Matching

튜플에 저장된 값을 매칭할 수 있다. 

let number = (100, 200)

if number.0 == 100 && number.1 == 200 {
    print("OK")
}

if 문으로 튜플에 저장된 값을 매칭시키는것도 문제 없이 가능하다. 

하지만 새로운 조건이 추가될 때마다 else - if로 계속 추가해주어야 하기 떄문에 코드가 복잡해지므로 비효율적이다.

그래서 switch문으로 간단하게 값을 매칭시킬수 있다.

let Point = (1, 1)

switch Point {
case (0, 0):
  print("\(Point) 원점")
case (_, 0):
  print("\(Point) x축에 있다.")
case (0, _):
  print("\(Point) y축에 있다.")
case (-2...2, -2...2):
  print("\(Point) 범위 안에 있다")
default:
  print("\(Point) 범위 밖에 있다.")
}

'Swift > Swift문법' 카테고리의 다른 글

Swift문법 - String Options  (0) 2023.02.19
Swift문법 - String and Characters  (0) 2023.02.12
Swift문법 - Closure  (0) 2023.01.28
Swift문법 - Functions  (0) 2023.01.22
Swift문법 - Optional  (1) 2023.01.15
    'Swift/Swift문법' 카테고리의 다른 글
    • Swift문법 - String Options
    • Swift문법 - String and Characters
    • Swift문법 - Closure
    • Swift문법 - Functions
    KWiOS
    KWiOS

    티스토리툴바