Sobes.tech
Junior — Middle

Poate fi definită o funcție în interiorul unei definiții de protocol?

sobes.tech AI

Răspuns de la AI

În Swift, în interiorul definiției unui protocol, nu se pot implementa funcții — protocoalele descriu doar cerințele pentru metode, proprietăți și alte membri care trebuie implementați în clase, structuri sau enumerări care respectă protocolul.

Adică, într-un protocol, poți declara semnătura unei funcții, dar nu corpul acesteia:

protocol MyProtocol {
    func doSomething()
}

Implementarea funcției doSomething() trebuie furnizată în tipul care moștenește acest protocol.

Totuși, odată cu apariția extensiilor de protocol (protocol extensions), poți adăuga o implementare implicită a metodelor, care va fi disponibilă pentru toate tipurile care respectă protocolul:

extension MyProtocol {
    func doSomething() {
        print("Implementare implicită")
    }
}

Astfel, direct în interiorul protocolului, nu se poate defini o funcție, dar se poate adăuga o implementare în extensia protocolului.