Sobes.tech
Junior — Middle

Se poate implementa un protocol folosind generice într-un limbaj de programare?

sobes.tech AI

Răspuns de la AI

În Swift, se pot folosi generice împreună cu protocoale, dar protocoalele în sine nu sunt generice. În schimb, se pot crea protocoale cu tipuri asociate (associated types), care permit definirea unor cerințe generice. Acest lucru permite implementarea unor interfețe flexibile și sigure din punct de vedere al tipurilor.

Exemplu de protocol cu un tip asociat:

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

Astfel, protocoalele cu tipuri asociate reprezintă o modalitate de a implementa interfețe generice, similare cu genericele.