Czy można zdefiniować funkcję wewnątrz definicji protokołu?
sobes.tech AI
Odpowiedź od AI
W Swiftie, w definicji protokołu nie można implementować funkcji — protokoły opisują tylko wymagania dotyczące metod, właściwości i innych członków, które muszą być zaimplementowane w klasach, strukturach lub wyliczeniach zgodnych z protokołem.
Oznacza to, że w protokole można zadeklarować sygnaturę funkcji, ale nie jej ciało:
protocol MyProtocol {
func doSomething()
}
Implementacja funkcji doSomething() musi być dostarczona w typie, który dziedziczy po tym protokole.
Jednakże, pojawienie się rozszerzeń protokołów (protocol extensions) pozwala na dodanie domyślnej implementacji metod, która będzie dostępna dla wszystkich typów zgodnych z protokołem:
extension MyProtocol {
func doSomething() {
print("Domyślna implementacja")
}
}
W ten sposób, bezpośrednio w protokole nie można zdefiniować funkcji, ale można dodać implementację w rozszerzeniu protokołu.