Sobes.tech
Junior — Middle

Vai ir iespējams īstenot protokolu, izmantojot ģenerikus programmēšanas valodā?

sobes.tech AI

Atbilde no AI

Swift var izmantot ģenerikus kopā ar protokoliem, bet paši protokoli nav ģeneriski. Tā vietā var izveidot protokolus ar saistītiem tipiem (associated types), kas ļauj definēt vispārīgas prasības. Tas ļauj realizēt elastīgas un tipa drošas saskarnes.

Piemērs protokolam ar saistītu tipu:

protocol Container {
    associatedtype Item
    func append(_ item: Item)
    var count: Int { get }
    subscript(i: Int) -> Item { get }
}

struct IntStack: Container {
    var items = [Int]()
    mutating func append(_ item: Int) {
        items.append(_ item)
    }
    var count: Int {
        return items.count
    }
    subscript(i: Int) -> Int {
        return items[i]
    }
}

Tādējādi, protokoli ar saistītiem tipiem ir veids, kā realizēt ģeneriskas saskarnes, līdzīgas ģenerikiem.