Sobes.tech
Junior — Middle

È possibile definire una funzione all'interno della definizione di un protocollo?

sobes.tech AI

Risposta dell'AI

In Swift, all’interno della definizione di un protocollo non è possibile implementare funzioni — i protocolli descrivono solo i requisiti per metodi, proprietà e altri membri che devono essere implementati in classi, strutture o enumerazioni conformi al protocollo.

Cioè, in un protocollo si può dichiarare la firma di una funzione, ma non il corpo:

protocol MyProtocol {
    func doSomething()
}

L’implementazione della funzione doSomething() deve essere fornita nel tipo che eredita da quel protocollo.

Tuttavia, con l’introduzione delle estensioni di protocollo (protocol extensions), è possibile aggiungere un’implementazione di default dei metodi, che sarà disponibile per tutti i tipi conformi al protocollo:

extension MyProtocol {
    func doSomething() {
        print("Implementazione di default")
    }
}

In questo modo, direttamente all’interno del protocollo, non si può definire una funzione, ma si può aggiungere un’implementazione nell’estensione del protocollo.