231213_TIL_제네릭

ykyo·2023년 12월 13일

제네릭

  • 제네릭으로 구현한 기능과 타입은 재사용하기도 쉽고, 코드의 중복을 줄일 수 있다.
  • 실제 타입 이름을 써주는 대신, placeholder를 사용
  • 타입의 종류를 알려주지 않지만 어떤 타입이라는 것은 알려준다
  • 실제 타입은 함수가 호출되는 순간 결정됨

예시

// 제네릭 사용 X 경우
// 두 변수의 값을 치환하는 함수, 인자를 타입별로 작성해야함
func swapTwoInts(_ a: inout Int, _ b: inout Int) {
	let tempA = a
    a = b
    b = tempA
}

// 이걸 제네릭으로 사용할 경우, 타입에 상관없이 사용가능

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

-------------------------------------------------------------

// where 키워드
// 프로토콜 채택 제약조건
func process<T>(value: T) where T: Numeric {
	//numeric 프로토콜을 채택하는 타입만을 제네릭 타입 T 로 받음
    print("Value is a numeric type.")
}
process(value: 5) // Value is a numeric type.
profile
for ios, swift, etc.

0개의 댓글