È 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.