Може ли да се дефинира функция вътре в дефиницията на протокол?
sobes.tech AI
Отговор от AI
В Swift вътре в дефиницията на протокол не може да се реализират функции — протоколите описват само изисквания към методи, свойства и други членове, които трябва да бъдат реализирани в класове, структури или изброявания, съответстващи на протокола.
Тоест, в протокол може да обявите сигнатура на функция, но не и тялото ѝ:
protocol MyProtocol {
func doSomething()
}
Реализацията на функцията doSomething() трябва да бъде предоставена в типа, който наследява този протокол.
Обаче, с появата на разширения на протоколите (protocol extensions), може да добавите реализация по подразбиране на методи, която ще бъде достъпна за всички типове, съответстващи на протокола:
extension MyProtocol {
func doSomething() {
print("Реализация по подразбиране")
}
}
По този начин, директно вътре в протокола функцията не може да бъде дефинирана, но може да добавите реализация в разширението на протокола.