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
- globalkey
- switch
- runTransaction
- borderRadius
- Snapshot
- setstate
- Stream
- transform
- ListView.builder
- multiprovider
- swift 문법
- controller
- Camera
- snackbar
- consumer
- changenotifier
- provider
- changenotifierprovider
- datetime
- signout
- 문법
- divider
- user
- platformexception
- Firebase
- permission
- Navigator
- enum
- Swift
- reference
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