Swift 기초 문법 - 9. 제네릭

정성윤·2023년 7월 10일
0

Swift 이론

목록 보기
11/64
post-thumbnail
  • 모든 타입을 커버하는 방법
  • 타입에 의존하지 않는 범용코드
  • 배열, Set, 딕셔너리 등등...
  • 하나의 타입에 의존하게 되면 타입마다 모든 종류로 만들어야 함
func 함수이름<T>(input: T){
	input -> T타입 변수
}

Swift에서 제네릭(Generic)은 함수, 타입, 구조체, 열거형 등을 작성할 때 일반적인 유형 대신 여러 유형에 대해 작동할 수 있도록 유연성을 제공하는 기능입니다. 제네릭은 코드의 재사용성을 높이고 유형 안정성을 강화하기 위해 사용됩니다.

제네릭을 사용하면 함수나 타입을 선언할 때 특정한 유형을 명시하지 않고 추상적인 형태로 작성할 수 있습니다. 함수 또는 타입을 사용할 때 구체적인 유형을 지정하여 실제로 동작하게 할 수 있습니다.

제네릭을 사용하여 함수를 작성하면 특정 유형에 의존하지 않고 여러 유형의 데이터를 처리할 수 있습니다.제네릭 함수를 사용하면 동일한 로직을 재사용하여 다양한 유형의 데이터에 대해 정렬을 수행할 수 있습니다.

''와 같은 형태로 사용되며, 'T'는 일반적으로 타입 매개변수라고 부릅니다.
실제 유형이 전달되기 전까지 일시적으로 추상적인 형태로 존재하는 것을 의미합니다. 제네릭을 사용할 때는 'T'를 실제 유형으로 대체하여 함수나 타입을 사용해야 합니다.

  func swapValues<T>(_ a: inout T, _ b: inout T) {
    let temp = a
    a = b
    b = temp
}

같은 타입인 두 변수의 값을 교환 한다는 목적을 타입에 상관없이 할 수 있도록 단 하나의 함수로 구현할 수 있습니다.
플레이스홀더 T는 타입의 종류를 알려주지는 않지만 말 그대로 어떤 타입이라는 것을 알려줍니다.

즉, 매개변수로 플레이스홀더 타입이 T인 두 매개변수가 있으므로, 두 매개변수는 같은 타입이라는 것입니다.
스위프트 컴파일러는 함수의 문법을 검사할 때, T의 실제 타입을 신경쓰지 않습니다.

제네릭 타입을 특정 프로토콜을 따르는 타입만 사용할 수 있도록 제약을 두어야하는 상황이 발생할 수 있습니다. 타입 제약은 타입 매개변수가 가져야 할 제약 사항을 지정할 수 있는 방법입니다.
타입 제은 클래스 타입 또는 프토토콜만 줄 수 있습니다**

참고(출처) : 개발하는 정대리, 야곰(Swift5)

profile
이유있는 스위프트 개발자

0개의 댓글