Lehet-e funkciót definiálni protokollalapításban?
sobes.tech MI
Válasz az MI-től
Swiftben a protokoll definícióján belül nem lehet funkciókat implementálni — a protokollok csak a módszerek, tulajdonságok és más tagok követelményeit írják le, amelyeket a protokollnak megfelelő osztályok, struktúrák vagy enumerációk kell, hogy megvalósítsanak.
Vagyis, egy protokollban deklarálhatod egy függvény szignatúráját, de nem a törzsét:
protocol MyProtocol {
func doSomething()
}
A doSomething() függvény implementációját a protokollt örökölő típusnak kell biztosítania.
Azonban, a protokoll kiterjesztések (protocol extensions) megjelenésével, hozzá lehet adni alapértelmezett módszer-implementációkat, amelyek minden, a protokollnak megfelelő típus számára elérhetőek lesznek:
extension MyProtocol {
func doSomething() {
print("Alapértelmezett implementáció")
}
}
Így, közvetlenül a protokollon belül nem lehet függvényt definiálni, de hozzá lehet adni egy implementációt a protokoll kiterjesztésében.