Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- borderRadius
- enum
- user
- Firebase
- controller
- Navigator
- datetime
- Snapshot
- signout
- permission
- divider
- ListView.builder
- Swift
- Camera
- reference
- changenotifierprovider
- globalkey
- changenotifier
- provider
- snackbar
- switch
- platformexception
- runTransaction
- consumer
- setstate
- multiprovider
- 문법
- swift 문법
- transform
- Stream
Archives
- Today
- Total
코딩하는 제리
[Swift] Generic 제너릭 본문
- 기능은 같고 매개변수형(파라미터 데이터 타입)만 다른 함수
// 제너릭 명은 자유롭게 변경 가능하나 보통 T로 사용
func swapAny<T>(_ a: inout T, _ b: inout T) {
let temp = a
a = b
b = temp
}
// Int형
var x = 10
var y = 20
swapAny(&x, &y)
// Double형
var xd = 10.3
var yd = 20.7
swapAny(&xd, &yd)
// String형
var xd = "Hi"
var yd = "Hello"
swapAny(&xs, &ys)
struct IntStack {
var items = [Int]() // 배열 선언
mutating func push(_ item: Int) {
items.appned(item) // 배열에 아이템 추가
}
mutating func pop() -> Int {
return items.removeLast() // 배열의 마지막 아이템 삭제
}
}
// 제너릭을 사용하지 않은 호출법
var stackOfInt = IntStack()
// 제너릭으로 변경
struct AnyStack <T> {
var items = [T]() // 배열 선언
mutating func push(_ item: T) {
items.appned(item) // 배열에 아이템 추가
}
mutating func pop() -> T {
return items.removeLast() // 배열의 마지막 아이템 삭제
}
}
// 제너릭을 사용한 호출법
var stackOfInt = AnyStack<Int>()
var stackOfString = AnyStack<String>()
var stackOfDouble = AnyStack<Double>()
print(stackOfInt.pop()) // 삭제된 아이템 출력
@frozen 키워드
- @frozen struct Array<Element>
-@frozen은 저장프로퍼티 추가, 삭제 불가능
swift의 배열도 generic 구조체이다.
- var x: [Int] = []
- var y = [Int]()
- var z: Array<Int> = []
- var a: [Int] = [1, 2, 3, 4]
- var b: Array<Int> = [1, 2, 3, 4]
- var c: Array<Double> = [1.2, 2.3, 3.4]
'iOS > SwiftUI' 카테고리의 다른 글
[Swift] 인스턴스 초기화 (0) | 2022.01.13 |
---|---|
[Swift] delegate/datasource (0) | 2022.01.13 |
[Swift] Error Handling (Exeption Handling) (0) | 2022.01.12 |
[Swift} 옵셔널 체이닝(Optional Chaining) (0) | 2022.01.12 |
[Swift] protocol (0) | 2022.01.12 |
Comments