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.