일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로토콜
- RxSwift
- 이론
- SwiftUI
- 학과별커뮤니티
- 세종대학교
- 대표
- MVVM
- struct
- 구름톤 유니브
- 네트워크
- 앱개발
- 기초문법
- 반응형
- mvc
- uikit
- swift
- CS
- 토이프로젝트
- WeatherKit
- collectionview
- ios
- 스트럭트
- 동시성
- GCD
- Kingfisher
- async
- 옵셔널
- Optional
- 실습
- Today
- Total
스윞한 개발자
Swift 기초 문법 - 제네릭 본문
제네릭이란?
저는 처음 제네릭이라는 단어를 들었을 때 생전 처음 들어보는 단어고 나중에 기억도 못하겠지,, 하고 막막함이 컸어요!
막상 별거 없고 차근차근 이해하면 쉽게 이해하고 유용하게 사용할 수 있는 문법 중 하나입니다!

< 제네릭 >
* 모든 타입을 커버하는 방법
* 타입에 의존하지 않는 범용코드
* 배열, Set, 딕셔너리 등등...
* 하나의 타입에 의존하게 되면 타입마다 모든 종류로 만들어야 함
정도로 간단하게 정리할 수 있어요!
func 함수이름<T>(input: T){
input -> T타입 변수
}
Swift에서 제네릭(Generic)은 함수, 타입, 구조체, 열거형 등을 작성할 때 일반적인 유형 대신 여러 유형에 대해 작동할 수 있도록 유연성을 제공하는 기능입니다. 제네릭은 코드의 재사용성을 높이고 유형 안정성을 강화하기 위해 사용됩니다.
제네릭을 사용하면 함수나 타입을 선언할 때 특정한 유형을 명시하지 않고 추상적인 형태로 작성할 수 있습니다. 함수 또는 타입을 사용할 때 구체적인 유형을 지정하여 실제로 동작하게 할 수 있습니다.
제네릭을 사용하여 함수를 작성하면 특정 유형에 의존하지 않고 여러 유형의 데이터를 처리할 수 있습니다.제네릭 함수를 사용하면 동일한 로직을 재사용하여 다양한 유형의 데이터에 대해 정렬을 수행할 수 있습니다.
'<T>'와 같은 형태로 사용되며, 'T'는 일반적으로 타입 매개변수라고 부릅니다.
실제 유형이 전달되기 전까지 일시적으로 추상적인 형태로 존재하는 것을 의미합니다. 제네릭을 사용할 때는 'T'를 실제 유형으로 대체하여 함수나 타입을 사용해야 합니다.

func swapValues<T>(_ a: inout T, _ b: inout T) {
let temp = a
a = b
b = temp
}
같은 타입인 두 변수의 값을 교환 한다는 목적을 타입에 상관없이 할 수 있도록 단 하나의 함수로 구현할 수 있습니다.
플레이스홀더 T는 타입의 종류를 알려주지는 않지만 말 그대로 어떤 타입이라는 것을 알려줍니다.
즉, 매개변수로 플레이스홀더 타입이 T인 두 매개변수가 있으므로, 두 매개변수는 같은 타입이라는 것입니다.
스위프트 컴파일러는 함수의 문법을 검사할 때, T의 실제 타입을 신경쓰지 않습니다.
- 제네릭 타입을 특정 프로토콜을 따르는 타입만 사용할 수 있도록 제약을 두어야하는 상황이 발생할 수 있습니다.
- 타입 제약은 타입 매개변수가 가져야 할 제약 사항을 지정할 수 있는 방법입니다.
- 타입 제은 클래스 타입 또는 프토토콜만 줄 수 있습니다!
'Swift 이론' 카테고리의 다른 글
Swift 기초문법 - 객체 생성자, 해제자 (0) | 2024.01.23 |
---|---|
Swift 기초문법 - 클로저 (0) | 2024.01.23 |
Swift 기초 문법 - 클래스 vs 스트럭트(구조체) (0) | 2024.01.23 |
Swift 기초문법 - Unwrap 옵셔널 변수 (2) | 2024.01.23 |
Swift 기초문법 - For 반복문 (0) | 2024.01.23 |