Swift의 타입
Tuple을 설명하기 전에 Swift의 타입들을 정리하고 넘어가는게 좋을 것 같아서 정리해 봤습니다.
스위프트의 타입에는 2가지 종류가 있습니다.
Named Type과 Compound Type이 있고
Compound Type안에는 Function Type과 Tuple타입이 있습니다.
- Named Type : 클래스, 구조체, 열거형, 프로토콜, 기본데이터타입들
- Compound Type
- Function Type : ex)let sum: (Int, Int) -> Int = { return $0 + $1 }
- Tuple Type
Tuple
쉼표로 구분한 타입들을 괄호로 테두리 친 목록입니다.
튜플은 Compound Type(복합 종류) 이름에서 알 수 있다시피
여러가지 타입들을 괄호 안에 관련있는 것들끼리 묶어서 사용 할 수 가 있어서
가독성을 향상 시킬 수 있습니다.
사용법
let tuple: (Int, String) = (1, "튜플")
print(tuple.0) //1
print(tuple.1) //튜플
이렇게 tuple.index를 사용하여 값에 접근할 수 있습니다.
하지만 0이 뭔지, 1이 뭔지 알 수 없잖아요? 방법이 있습니다. ㅎㅎ
튜플 가독성 높이기
Type Annotation (타입 보조 설명)
let tuple: (number: Int,text: String) = (1, "튜플")
let tuple2 = (number: 1, "튜플")
print(tuple.number) //1
print(tuple2.number) //1
print(tuple2.1) //튜플
요런식으로 ‘타입 보조 설명’ 은 타입 앞에 ‘타입 특성 (type attributes) 목록’ 을 선택 사항으로 담고 있을 수 있습니다.
튜플 분해 (Tuple Decomposition)
튜플은 여러가지 타입들을 묶어논 것이라고 했죠? 그런데 묶은 것을 다시 풀 수도 있습니다.
let tuple: (number: Int,text: String) = (1, "튜플")
var (newNumber, newText) = tuple
newText = "새로운튜플"
print(newText)
튜플은 언제쓰나?
서로 타입이 다른 여러개의 값을 하나의 타입으로 묶어서 사용하고 싶다. 그럴 때 사용하면 됩니다.
엥 그럼 구조체나 클래스 쓰면 되잖아요. 뭐 그렇게 말 할 수도 있는데 간단히 사용하는데에는 구조체보다는 튜플이 훨씬 짧은 코드로
사용 할 수 있으니까 튜플을 사용하는 것 같습니다.
또한 하나를 두고두고 계속 쓰려면 튜플 보다는 구조체 나 클래스를 쓰고 일시적으로 사용 할 때만 튜플을 사용 합니다.
저는 특히 튜플+switch문의 합이 좋다고 생각하는데
let tuple: (number: Int,text: String) = (1, "튜플")
switch tuple {
case let(num, str) where num == 2 :
print("num == 2" )
case (1, _) :
print("num == 1" )
case (3...5, "튜플") :
print("number가 3~5, text가 튜플인 것")
default :
break
}
이런식으로 튜플 안에 있는 값들을 비교할 때 간결하게 쓸 수 있어서 좋은 것 같습니다.
참고 : https://zeddios.tistory.com/207
참고 : https://babbab2.tistory.com/31
참고 : https://xho95.github.io/swift/language/grammar/types/self/2020/02/20/Types.html
'IOS Swift' 카테고리의 다른 글
[자료구조] HashTable 이란? (0) | 2021.08.29 |
---|---|
Hashable 이란? - Swift (2) | 2021.08.24 |
Frame과 Bounds의 차이 (4) | 2021.08.03 |
Swift 네이밍 컨벤션 (0) | 2020.12.09 |
Git branch 생성하기 (0) | 2020.12.09 |