관리 메뉴

스윞한 개발자

Swift 기초 문법 - 제네릭 본문

Swift 이론

Swift 기초 문법 - 제네릭

스윞남 2024. 1. 23. 01:03
728x90
반응형
SMALL

제네릭이란? 

 

저는 처음 제네릭이라는 단어를 들었을 때 생전 처음 들어보는 단어고 나중에 기억도 못하겠지,, 하고 막막함이 컸어요!

 

막상 별거 없고 차근차근 이해하면 쉽게 이해하고 유용하게 사용할 수 있는 문법 중 하나입니다!

 

< 제네릭 >

 

* 모든 타입을 커버하는 방법
* 타입에 의존하지 않는 범용코드
* 배열, 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의 실제 타입을 신경쓰지 않습니다.


-  제네릭 타입을 특정 프로토콜을 따르는 타입만 사용할 수 있도록 제약을 두어야하는 상황이 발생할 수 있습니다. 

- 타입 제약은 타입 매개변수가 가져야 할 제약 사항을 지정할 수 있는 방법입니다. 

- 타입 제은 클래스 타입 또는 프토토콜만 줄 수 있습니다!

728x90
반응형
LIST