Sobes.tech
Junior — Middle

Може ли дефинисати функцију унутар дефиниције протокола?

sobes.tech АИ

Одговор од АИ

U Swift-u, unutar definicije protokola nije moguće implementirati funkcije — protokoli opisuju samo zahteve za metode, svojstva i druge članove koje moraju biti implementirane u klasama, strukturama ili enumeracijama koje odgovaraju protokolu.

To jest, u protokolu možete deklarisati potpis funkcije, ali ne i telo:

protocol MyProtocol {
    func doSomething()
}

Implementacija funkcije doSomething() mora biti obezbeđena u tipu koji nasleđuje taj protokol.

Međutim, sa pojavom protokol extension-a, možete dodati podrazumevanu implementaciju metoda, koja će biti dostupna svim tipovima koji odgovaraju protokolu:

extension MyProtocol {
    func doSomething() {
        print("Podrazumevana implementacija")
    }
}

Na taj način, direktno unutar protokola funkciju nije moguće definisati, ali možete dodati implementaciju u protokol extension-u.