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.