Sobes.tech
Junior — Middle

Kas on võimalik rakendada protokolli, kasutades generics programmeerimiskeeles?

sobes.tech AI

Vastus AI-lt

Swiftis saab kasutada generikke koos protokollidega, kuid protokollid ise ei ole generikud. Selle asemel saab luua protokolle seotud tüüpidega (associated types), mis võimaldavad määratleda üldnõudeid. See võimaldab rakendada paindlikke ja tüübiturvalisi liideseid.

Näide protokollist seotud tüübiga:

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

Seega, protokollid seotud tüüpidega on viis rakendada üldisi liideseid, sarnaselt generikutele.