Sobes.tech
Junior — Middle

Je možné definovať funkciu v rámci definície protokolu?

sobes.tech AI

Odpoveď od AI

V Swift-e, v definícii protokolu nie je možné implementovať funkcie — protokoly popisujú iba požiadavky na metódy, vlastnosti a ďalších členov, ktoré musia byť implementované v triedach, štruktúrach alebo enumeráciách zodpovedajúcich protokolu.

To znamená, že v protokole môžete deklarovať podpis funkcie, ale nie jej telo:

protocol MyProtocol {
    func doSomething()
}

Implementácia funkcie doSomething() musí byť poskytnutá v type, ktoré tento protokol dedí.

Avšak, s príchodom rozšírení protokolov (protocol extensions), môžete pridať predvolenú implementáciu metód, ktorá bude dostupná pre všetky typy zodpovedajúce protokolu:

extension MyProtocol {
    func doSomething() {
        print("Predvolená implementácia")
    }
}

Týmto spôsobom nie je možné priamo v protokole definovať funkciu, ale môžete pridať implementáciu v rozšírení protokolu.