Kan een functie binnen een protocoldefinitie worden gedefinieerd?
sobes.tech AI
Antwoord van AI
In Swift is het niet mogelijk om functies te implementeren binnen de definitie van een protocol — protocollen beschrijven alleen de vereisten voor methoden, eigenschappen en andere leden die geïmplementeerd moeten worden in klassen, structuren of enumeraties die voldoen aan het protocol.
Dat wil zeggen, in een protocol kun je de handtekening van een functie declareren, maar niet de body:
protocol MyProtocol {
func doSomething()
}
De implementatie van de functie doSomething() moet worden geleverd in het type dat dit protocol implementeert.
Echter, met de komst van protocol extensies, kun je een standaardimplementatie van methoden toevoegen, die beschikbaar is voor alle typen die voldoen aan het protocol:
extension MyProtocol {
func doSomething() {
print("Standaard implementatie")
}
}
Zo kan je dus niet direct binnen het protocol een functie definiëren, maar je kunt wel een implementatie toevoegen in de protocolextensie.