[swift] 제네릭을 사용하여 다양한 데이터 타입을 처리하는 방법은?

제네릭을 활용한 다양한 데이터 타입 처리

제네릭은 Swift에서 다양한 데이터 타입을 처리하고자 할 때 유용하게 사용되는 기능입니다.

제네릭의 개념

제네릭은 코드의 유연성을 높이고 중복 코드를 줄이기 위해 도입되었습니다. 제네릭을 사용하면 함수, 구조체, 열거형 등을 선언할 때 특정 데이터 타입을 지정하지 않고, 재사용 가능한 코드를 작성할 수 있습니다.

제네릭 함수의 선언

제네릭 함수를 선언할 때는 함수명 뒤에 <T>와 같이 꺾쇠 괄호 안에 임의의 식별자를 지정합니다. 이 식별자는 해당 함수 내에서 임시적으로 사용될 데이터 타입을 나타냅니다.

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

위 코드에서 <T>는 임의의 데이터 타입을 나타냅니다. 이후 ab의 데이터 타입은 함수가 호출될 때 결정됩니다.

제네릭 타입

제네릭을 사용하여 구조체나 클래스를 선언할 수도 있습니다.

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

위 코드에서 Stack은 제네릭을 사용하여 임의의 데이터 타입을 요소로 갖는 스택을 나타내는 구조체입니다. <Element>는 임의의 데이터 타입을 나타냅니다.

제네릭을 활용하면 유연하고 재사용 가능한 코드를 작성할 수 있으며, 함수나 타입을 선언할 때 특정한 데이터 타입을 결정하지 않고 유연하게 다룰 수 있는 장점이 있습니다.

참고 자료

Swift 공식 문서 - 제네릭 ```