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.