반응형
Swift - Generic
- Generic을 사용하면 좀 더 유연하게 Funtion 및 Type을 작성할 수 있습니다. 중복을 피하고 그 의도를 추상적인 방식으로 표현하는 코드를 작성합니다.
- 아래와 같은 방식으로 사용합니다.
func swapTwoValues<T>(_ a: inout T, _ b: inout T) {
let temporaryA = a
a = b
b = temporaryA
}
- 이름은 자유롭게 지정할 수 있습니다. 일반적으로는 T,U,V와 같은 단일 문자를 많이 사용합니다.
- Generic 뒤에 단일 클래스 혹은 프로토콜을 배치하여 Generic의 타입을 제한할 수도 있습니다.
func someFunction<T: SomeClass, U: SomeProtocol>(someT: T, someU: U) {
// function body goes here
}
- where 절을 통해 조건을 줄 수도 있습니다.
func allItemsMatch<C1: Container, C2: Container>
(_ someContainer: C1, _ anotherContainer: C2) -> Bool
where C1.Item == C2.Item, C1.Item: Equatable {
// Check that both containers contain the same number of items.
if someContainer.count != anotherContainer.count {
return false
}
// Check each pair of items to see if they're equivalent.
for i in 0..<someContainer.count {
if someContainer[i] != anotherContainer[i] {
return false
}
}
// All items match, so return true.
return true
}
참고
반응형
'🍎 Apple > Swift' 카테고리의 다른 글
[Swift] Method Swizzling (0) | 2022.04.10 |
---|---|
[Swift] Localizing (NSLocalizedString) (5) | 2022.04.10 |
[Swift] NotificationCenter (0) | 2022.03.07 |
[Swift] KVC(Key-Value Coding), KVO(Key-Value Observing) (0) | 2022.03.01 |
[Swift] Monad (0) | 2022.03.01 |