develop
Generic 본문
반응형
유연하게 작성할 수 있고 추상적으로 코드를 작성할 수 있다.
하나의 타입만 생각하고 코드를 만드는 것이 아니라 타입에 관계 없이 코드를 만들어서 사용한다.
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