-
[사전캠프 TIL 8일차] GenericiOS💖 2025. 2. 13. 16:42
학습 키워드
제네릭
제네릭 (Generic)
- 사전적 의미 : 포괄적인, 통칭의

generic 사전의미 - 코드의 유연성 / 재사용성 높이기 위해, 타입에 의존하지 않는 코드를 작성하는 방법
- 같은 로직을, 다양한 타입에서 사용 가능하도록!
제네릭 함수
: 하나의 함수로 여러타입 처리func swapValues<T>(_ a: inout T, _ b: inout T) { let temp = a a = b b = temp } var ten = 10 var twenty = 20 swapValues(&ten, &twenty) print("ten: \(ten), twenty: \(twenty)") // ten: 20, twenty: 10inout parameter
- Swift에서 함수 파라미터는 상수!
➡️ 함수 내부에서 파라미터의 값 변경 불가 - 함수 호출 종료 후에도, 함수의 파라미터 값이 변경 된 것을 유지하고 싶을 때
➡️ inout 파라미터 사용 - 변수만을 취급
➡️ 변수를 함수의 인자로 전달 할 때 & 로 전달 (= 변수의 주소값으로 전달) - ⚠️ 메모리 접근 주의 ⚠️
- size, number 은 같은 메모리 주소를 참조함!
➡️ 읽기, 쓰기 동시에 이루어지면 충돌 ‼️
- size, number 은 같은 메모리 주소를 참조함!
var size = 10 func increment(_ number: inout Int) { number += size } increment(&size) // Error: conflicting accesses to size제네릭 타입
: struct, class, enumstruct Stack<T> { private var elements: [T] = [] mutating func push(_ element: T) { elements.append(element) } mutating func pop() -> T? { return elements.popLast() } }제네릭 직접 구현해보기
1. 제네릭 함수 작성:
두 값을 교환하는 제네릭 함수 swapValues<T> 를 작성하세요.예제 입력:
func swapValues<T> (_ a: inout T, _ b: inout T) { var temp = a a = b b = temp } var a = 10 var b = 20 swapValues(&a, &b) print(a, b) // 출력: 20, 102. 제네릭 스택 구현:
stack<T> 구조체를 작성하고 다음 기능을 구현하세요.- push(_ :) : 스택에 요소 추가
- pop() : 스택에 요소 제거
- 스택의 현재 상태를 출력하는 메서드
예제 입력:
struct Stack<T> { var elements: [T] = [] mutating func push(_ element: T) { elements.append(element) } mutating func pop() -> T { return elements.popLast() } } var intStack = Stack<Int>() intStack.push(1) intStack.push(2) print(intStack.pop()) // 출력: 2출처
https://hyunsikwon.github.io/swift/Swift-Inout-01/
Swift - Inout 파라미터
Swift의 inout 파라미터에 대해 알아봅시다.
hyunsikwon.github.io
'iOS💖' 카테고리의 다른 글
[사전캠프 TIL 11일차] Codable (w/ CodingKey) (0) 2025.02.17 [사전캠프 TIL 9, 10일차] Combine 딥다이브 🔥 (0) 2025.02.14 [사전캠프 TIL 7일차] GCD (DispatchQueue 종류 & 특성) (0) 2025.02.13 [사전캠프 TIL 6일차] GCD (Serial vs. Concurrent) (0) 2025.02.12 [사전캠프 TIL 5일차] GCD (+α), Operation (0) 2025.02.07