[swift] 제네릭을 사용하여 코드 중복을 줄이는 방법은?

제네릭은 Swift에서 재사용 가능한 코드를 작성하는데 매우 유용한 도구입니다. 제네릭을 사용하면 함수, 메서드, 클래스, 구조체, 프로토콜 등을 작성할 때 특정 데이터 타입을 독립적으로 처리할 수 있습니다. 이를 통해 같은 동작을 하는 코드를 중복 작성하지 않아도 되므로 코드의 유연성과 재사용성을 향상시킬 수 있습니다.

제네릭 함수 작성

예를 들어, 제네릭을 사용하여 배열에서 최솟값과 최댓값을 반환하는 함수를 작성해보겠습니다.

func findMin<T: Comparable>(in array: [T]) -> T {
    var min = array[0]
    for element in array {
        if element < min {
            min = element
        }
    }
    return min
}

func findMax<T: Comparable>(in array: [T]) -> T {
    var max = array[0]
    for element in array {
        if element > max {
            max = element
        }
    }
    return max
}

let numbers = [5, 3, 9, 2, 8]
print("최솟값:", findMin(in: numbers)) // 최솟값: 2
print("최댓값:", findMax(in: numbers)) // 최댓값: 9

위의 예제에서 findMinfindMax 함수는 제네릭으로 작성되었기 때문에 다양한 데이터 타입을 처리할 수 있습니다.

제네릭 타입 작성

또한, 제네릭을 사용하여 스택(Stack) 자료구조를 구현할 수도 있습니다.

struct Stack<Element> {
    private var elements = [Element]()
    
    mutating func push(_ element: Element) {
        elements.append(element)
    }
    
    mutating func pop() -> Element? {
        return elements.popLast()
    }
    
    func peek() -> Element? {
        return elements.last
    }
    
    var isEmpty: Bool {
        return elements.isEmpty
    }
}

var intStack = Stack<Int>()
intStack.push(3)
intStack.push(5)
print(intStack.pop()) // Optional(5)

위의 Stack 구조체는 제네릭으로 작성되어 다양한 데이터 타입을 담을 수 있습니다.

마무리

제네릭을 사용하여 코드 중복을 줄이고 유연하고 재사용 가능한 코드를 작성할 수 있습니다. 제네릭을 활용하여 프로그램을 작성하면 코드의 가독성과 유지보수성을 향상시킬 수 있으며, Swift에서 강력한 도구로 활용할 수 있습니다.

더 자세한 내용은 Swift 공식 문서를 참고하시기 바랍니다.