Sobes.tech
Junior — Middle

Lze implementovat protokol s použitím generik v programovacím jazyce?

sobes.tech AI

Odpověď od AI

Ve Swiftu lze používat generika spolu s protokoly, ale samotné protokoly nejsou generické. Místo toho lze vytvářet protokoly s přiřazenými typy (associated types), které umožňují definovat obecné požadavky. To umožňuje implementaci flexibilních a typově bezpečných rozhraní.

Příklad protokolu s přiřazeným typem:

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ímto způsobem jsou protokoly s přiřazenými typy způsobem, jak implementovat generická rozhraní, podobně jako generika.