Sobes.tech
Junior — Middle

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.