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