[swift] 제네릭을 사용하여 코드의 유연성(flexibility)을 높이는 방법은?

예를 들어, 제네릭을 사용하여 스택(Stack) 자료구조를 작성한다고 가정해보겠습니다. 제네릭을 사용하여 데이터 유형을 독립적으로 처리할 수 있으므로, 스택을 정수형, 문자열 또는 다른 데이터 유형에 대해 재사용할 수 있습니다.

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

위의 예제에서 Stack은 제네릭 형식 T를 사용하여 정의되었습니다. 이를 통해 Stack 구조체는 임의의 데이터 유형을 사용할 수 있으며, 유형에 관계없이 재사용될 수 있습니다.

제네릭을 사용하면 코드의 유연성을 증가시키고, 유형 안정성(type safety)을 유지함으로써 코드의 신뢰성을 높일 수 있습니다.