티스토리 뷰
Type Alias Declaration
타입 별명 선언
타입 별명 선언(type alias declaration)은 존재하는 타입에 대한 별칭을 당신의 프로그램에 알려줍니다. 타입별명(Typealias)은 typealias 키워드를 사용해서 선언됩니다. 그 예시는 아래와 같습니다.
위의 코드를 보시면 Pair, Typle이라는 각 2, 3개의 Int 타입을 갖는 별칭이 만들어 졌습니다. 맨 앞에는 typealias를 붙이고, Int 2개 3개로 이루어진 튜플타입에 각각 Pair, Tuple이라는 별침을 만들어 준 상황이 됩니다.
이로서 해당 별칭을 타입으로 지정해서 그에 맞는 값을 할당해줄 수 있게 되었습니다.
이렇게 특정 타입에 대한 별칭(alias)이 지어진 뒤, 해당 별명은 프로그램 내에 언제든 존재하는 기존 타입을 대신해서 원본타입과 동일한 타입 역할로서 사용할 수 있습니다. 기존의 존재하는 타입은 기존 타입으로서도, 별명 타입으로서도 사용이 가능해지는 것입니다.
typealias는 새로운 타입을 생성하는 것은 아닙니다. 단순히 별칭을 사용했을때 실제 타입을 참조, 대신해서 사용하는 것을 허용해주는 것입니다.
Using genericType parameter in typealias
typealias에 제네릭 타입 지정하기
typealias 선언은 별칭 타입에 존재하는 제네릭 타입 인자를 지정하고자 할 때, 제네릭 인자값을 사용할 수도 있습니다. typealias는 모든 제네릭 인자값을 사용해서 구체적인 타입을 제공할 수 있습니다. 이와 같은 제네릭 타입 사용 예시는 아래와 같습니다.
제네릭타입 인자와 함께 typealias가 선언되면, 제네릭 타입의 제약에 맞게 제약을 따르는 값도 할당되어야 합니다. 제네릭타입의 제약을 준수해야하는 것이지요.
제네릭타입 인자를 가진 별칭의 제네릭 제한보다, 별칭을 지정하려는 원본 타입의 제약이 더 좁은 경우에는 실제 별칭의 제네릭 타입 역할은 제한적일 수 있습니다.
위의 경우, 값 타입을 Hashable로 지정하려는 별칭타입, DictionaryOfInts였지만, 원본 값 타입이 더 좁은 범위의 타입인 Int이므로, Int로서의 역할밖에 수행할 수 없는 모습을 볼 수 있습니다.
Using alias in Protocols
프로토콜 내에서 별칭사용하기
프로토콜 선언부 내에서, typealias는 별칭을 지으려는 원본 타입에 대해 더 짧고, 편리한 이름을 제공할 수 있습니다. 이는 매우 자주 사용될 수 있습니다. 그 사용 예는 아래와 같습니다.
typealias를 사용하지 않았다면, sum 메서드는 T.Iterator.Element라는 타입을 모두 명시해줘야했을 것입니다. 하지만 typealias를 활용하면 간결하게 T.Element만 명시해서 사용할 수 있습니다.
'iOS 개발 > 개발자문서 정보' 카테고리의 다른 글
Swift 문법, Variadic Parameters 가변인자 사용법 (0) | 2020.07.13 |
---|---|
Swift 프로토콜, AssociatedType 선언 활용하기 (0) | 2020.07.09 |
Swift Generic 2) 제네릭 사용방법, 활용예시 (0) | 2020.07.06 |
Swift Generic 1) 제네릭 개요 및 역할 알아보기 (0) | 2020.07.05 |
Swift 문서, 스위프트 표준 라이브러리 개요 (0) | 2020.07.04 |
- Total
- Today
- Yesterday
- Swift 알고리즘
- Protocol
- 백준swift
- 프로토콜
- 백준알고리즘
- 개발자문서
- publisher
- swift 기초
- swift 문자열
- SwiftUI
- 알고리즘문제
- swift알고리즘
- swift reduce
- createML
- 컬렉션
- 자연어처리
- 프로그래머스
- swift언어
- 스위프트
- 부스트코스
- Collection
- swift string
- swift
- CoreML
- swift문제
- 김프매매
- ios
- uikit
- 프로그래머스swift
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |