swift

swift - Generic #3 (Associated Types)

행복하게사는게꿈 2021. 1. 13. 10:22

// Generic protocol을 선언하는 방법


//protocol QueueCompatible {
//   func enqueue(value: Int)
//   func dequeue() -> Int?
//}

protocol QueueCompatible {
    associatedtype Element // : Equatable 연관형식을 제한할 수도 있음
   func enqueue(value: Element)
   func dequeue() -> Element?
}

class IntergerQueue : QueueCompatible {
    // 연관 형식 설정
    typealias Element = Int
    
    // 연관 형식을 Int로 했기 때문에 Int
    func enqueue(value: Int) {
        
    }
    func dequeue() -> Int? {
        return 0
    }
}

// 연관형식 생략
class DoubleQueue: QueueCompatible {
    func dequeue() -> Double? {
        <#code#>
    }
    func enqueue(value: Double) {
        <#code#>
    }
}