[Swift] 제네릭(Generic)

Han's·2023년 8월 11일
0

TIL

목록 보기
15/20
post-thumbnail

제네릭(Generic) 이란?

제네릭은 스위프트의 강력한 기능 중 하나입니다.
제네릭을 이용해 코드를 구현하면 어떤 타입에도 유연하게 대응할 수 있습니다. 또한 제네릭으로 구현한 기능과 타입은 재사용 하기도 쉽고, 코드의 중복을 줄일 수 있기에 깔끔하고 추상적인 표현이 가능합니다.

무슨 말인지 이해가 어렵나요? 아래의 예제를 통해 제네릭에 대해 알아보겠습니다.

제네릭 사용 예시

  • 제네릭을 사용하지 않았을 때
func setValue(value: Int, key: String) {
	UserDefaults.standard.set(value, forKey: key)
}
    
func setValue(value: Float, key: String) {
	UserDefaults.standard.set(value, forKey: key)
}
    
func setValue(value: Double, key: String) {
	UserDefaults.standard.set(value, forKey: key)
}
    
func setValue(value: String, key: String) {
	UserDefaults.standard.set(value, forKey: key)
}

func setValue(value: Bool, key: String) {
	UserDefaults.standard.set(value, forKey: key)
}

위의 코드는 UserDefaults에 값을 저장하기 위해 오버 로딩 하여 타입별로 함수를 만들어 주었습니다.
하지만 똑같은 동작을 하는 함수를 타입별로 만들어 주는 것은 매우 귀찮고 깔끔하지 않은 코드입니다.


  • 제네릭을 사용했을 때
func setValue<T>(value: T, key: String) {
	UserDefaults.standard.set(value, forKey: key)
}

하지만 제네릭을 사용하여 함수를 만든다면 타입을 묶어서 하나의 함수로 만들 수 있어서 유연하게 대응 가능하고, 코드의 중복을 줄일 수 있기 때문에 스위프트의 강력한 기능 중 하나라고 하는 것입니다!

제네릭 타입을 구현하면 구조체, 클래스, 열거형 등이 어떤 타입과도 연관되어 동작할 수 있습니다.


제네릭 사용법

  • 제네릭을 사용하고자 할 때는 제네릭이 필요한 타입 또는 메서드의 이름 뒤에 <> 사이에 제네릭을 위한 타입 매개변수를 써주어 제네릭을 사용할 것임을 표시합니다.(위의 예시에서는 T를 사용)
profile
 iOS Developer

0개의 댓글