Sobes.tech
Junior — Middle

Dasturlash tilida generiklar yordamida protokolni amalga oshirish mumkinmi?

sobes.tech AI

AIdan javob

Swiftda, generiklar protokollar bilan birga ishlatilishi mumkin, ammo protokollar o'zlari generik emas. O'rniga, bog'liq turlar (associated types) bilan protokollar yaratish mumkin, bu umumiy talablarni belgilash imkonini beradi. Bu moslashuvchan va turga xavfsiz interfeyslarni amalga oshirish imkonini beradi.

Bog'liq turga ega protokol misoli:

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]
    }
}

Shu tarzda, bog'liq turlar bilan protokollar, generik interfeyslarni amalga oshirishning usuli bo'lib, ular generiklar bilan o'xshashdir.