Sobes.tech
Junior — Middle

È possibile istanziare direttamente un oggetto protocollo in un linguaggio di programmazione?

sobes.tech AI

Risposta dell'AI

In Swift (linguaggio di programmazione per iOS), i protocolli descrivono un insieme di requisiti (metodi, proprietà) che un tipo deve implementare. Non è possibile creare direttamente un'istanza del protocollo, poiché il protocollo stesso non contiene implementazione.

Tuttavia, se esiste una classe o struttura che implementa il protocollo, è possibile creare un'istanza di quel tipo e lavorarci tramite un riferimento al protocollo.

Esempio:

protocol Drawable {
    func draw()
}

class Circle: Drawable {
    func draw() {
        print("Disegniamo un cerchio")
    }
}

let shape: Drawable = Circle() // creiamo un'istanza della classe che implementa il protocollo
shape.draw() // chiamiamo il metodo del protocollo

Se si desidera avere un oggetto che corrisponde al protocollo, ma non si vuole creare una classe concreta, si possono usare tipi wrapper o implementazioni anonime, ma non esiste un'istanza diretta del protocollo.