[swift] 제네릭을 사용하여 데이터 구조를 어떻게 정의하는가?
struct Queue<T> {
    var elements = [T]()
    
    mutating func enqueue(_ element: T) {
        elements.append(element)
    }
    
    mutating func dequeue() -> T? {
        if elements.isEmpty {
            return nil
        } else {
            return elements.removeFirst()
        }
    }
}

var numberQueue = Queue<Int>()
numberQueue.enqueue(5)
numberQueue.enqueue(3)
print(numberQueue.dequeue())  // 출력: 5

위의 코드에서, Queue 구조체를 제네릭으로 정의하여, 다양한 유형의 요소를 담을 수 있도록 만들었습니다. 이것은 Int뿐만 아니라 어떤 유형의 요소든 큐에 넣을 수 있게 해줍니다.

이와 같이 제네릭을 사용하면 코드의 재사용성을 높일 뿐 아니라, 프로그램 내부의 버그 발생 가능성을 줄일 수 있습니다.

참고 자료:

Swift.org - Generics