Kann man eine Funktion innerhalb der Definition eines Protokolls definieren?
sobes.tech KI
Antwort von AI
In Swift ist es innerhalb der Protokolldefinition nicht möglich, Funktionen zu implementieren — Protokolle beschreiben nur die Anforderungen an Methoden, Eigenschaften und andere Mitglieder, die in Klassen, Strukturen oder Aufzählungen, die dem Protokoll entsprechen, implementiert werden müssen.
Das heißt, in einem Protokoll kann man die Signatur einer Funktion deklarieren, aber nicht den Körper:
protocol MyProtocol {
func doSomething()
}
Die Implementierung der Funktion doSomething() muss in dem Typ bereitgestellt werden, der dieses Protokoll übernimmt.
Mit dem Erscheinen von Protokollerweiterungen (protocol extensions) kann man jedoch eine Standardimplementierung von Methoden hinzufügen, die allen Typen, die dem Protokoll entsprechen, zur Verfügung steht:
extension MyProtocol {
func doSomething() {
print("Standardimplementierung")
}
}
Daher kann man innerhalb des Protokolls eine Funktion nicht direkt definieren, aber man kann eine Implementierung in der Protokollerweiterung hinzufügen.