develop

Generic 본문

iOS

Generic

pikachu987 2021. 1. 21. 20:05
반응형

유연하게 작성할 수 있고 추상적으로 코드를 작성할 수 있다.

하나의 타입만 생각하고 코드를 만드는 것이 아니라 타입에 관계 없이 코드를 만들어서 사용한다.

 

1. Functions

func swapValues<T>(_ lhs: inout T, _ rhs: inout T) {
    let temp = lhs
    lhs = rhs
    rhs = temp
}
var intA = 10
var intB = 20
swapValues(&intA, &intB)
print(intA)
print(intB)

var str1 = "str1"
var str2 = "str2"
swapValues(&str1, &str2)
print(str1)
print(str2)
20
10
str2
str1

 

2. Struct, Class

struct Example<T> {
    var items = [T]()
    
    var description: String {
        return "\(items)"
    }
    
    mutating func append(_ value: T) {
        items.append(value)
    }
}
var example1 = Example<Int>()
example1.append(1)
example1.append(2)
example1.append(3)
print(example1.description)

var example2 = Example<String>()
example2.append("1")
example2.append("2")
example2.append("3")
print(example2.description)
[1, 2, 3]
["1", "2", "3"]

 

3. Type

func find<T: Equatable>(array: [T], val: T) -> Int? {
    for (index, element) in array.enumerated() {
        if element == val { return index }
    }
    return nil
}
print(find(array: [1, 2, 3, 4], val: 1))
print(find(array: ["1", "2", "3", "4"], val: "3"))
Optional(0)
Optional(2)

 

4. AssociatedType

2021/01/08 - [iOS] - AssociatedType

 

5. where

where Keyword글의 func파트 참조

2021/01/13 - [iOS] - where Keyword (for의 where, switch 의 where, extension의 where, func의 where)

반응형

'iOS' 카테고리의 다른 글

BackgroundFetch 앱 백그라운드 상태에서 로직 실행하기  (0) 2021.01.24
Cache 앱의 캐시 사용하기  (0) 2021.01.23
Throttle, Debounce  (0) 2021.01.20
Declaration Attributes  (0) 2021.01.19
DispatchGroup  (0) 2021.01.18
Comments