[swift] 제네릭(Generic)

Swift에서 제네릭은 서로 다른 타입의 값을 다루는 함수, 구조체, 클래스 등을 일반화하여 재사용할 수 있도록 도와주는 기능입니다.

제네릭의 장점

제네릭을 사용하면 코드의 재사용성이 높아지고 타입 안정성이 보장됩니다. 같은 로직을 사용하더라도 서로 다른 타입에 대해 별도의 함수를 만들 필요가 없어지므로 유지보수가 용이해집니다.

제네릭 함수

예를 들어, Swift에서 제네릭 함수를 정의할 때는 다음과 같이 템플릿 형태로 작성됩니다.

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

위의 swap 함수는 두 개의 변수를 전달받아 값을 교환하는데, 제네릭을 사용하여 어떠한 타입의 변수든지 교환할 수 있도록 구현되어 있습니다.

제네릭 구조체 및 클래스

제네릭을 사용하여 구조체나 클래스를 정의할 수도 있습니다. 예를 들어, 제네릭을 활용하여 스택(Stack)을 구현할 때에는 다음과 같이 작성할 수 있습니다.

struct Stack<Element> {
    var items = [Element]()
    mutating func push(_ item: Element) {
        items.append(item)
    }
    mutating func pop() -> Element {
        return items.removeLast()
    }
}

위의 Stack 구조체는 제네릭을 통해 어떤 타입의 요소도 저장하고 반환할 수 있도록 되어 있습니다.

제네릭은 Swift에서 매우 강력한 기능 중 하나이며, 코드를 보다 모듈화하고 재사용성을 높일 수 있도록 도와줍니다.

참고 자료

제네릭에 대한 더 자세한 정보는 Swift 공식 문서를 참고하시기 바랍니다.