Sobes.tech
Junior — Middle

Lze definovat funkci uvnitř definice protokolu?

sobes.tech AI

Odpověď od AI

Ve Swiftu nelze přímo v definici protokolu implementovat funkce — protokoly pouze popisují požadavky na metody, vlastnosti a další členy, které musí být implementovány ve třídách, strukturách nebo výčtech odpovídajících protokolu.

To znamená, že v protokolu lze deklarovat signaturu funkce, nikoli její tělo:

protocol MyProtocol {
    func doSomething()
}

Implementace funkce doSomething() musí být poskytnuta v typu, který tento protokol dědí.

Nicméně, s příchodem rozšíření protokolů (protocol extensions) lze přidat výchozí implementaci metod, která bude dostupná všem typům odpovídajícím protokolu:

extension MyProtocol {
    func doSomething() {
        print("Výchozí implementace")
    }
}

Tímto způsobem nelze přímo uvnitř protokolu funkci definovat, ale lze přidat implementaci v rozšíření protokolu.