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.