> Что можно делать в расширениях протоколов в Swift (iOS, Swift)

Уровень: senior · Роль: mobile · Категория: Технические вопросы

Компании: SimbirSoft, Eltex

Стек: iOS, Swift

> Пример ответа

В расширениях протоколов в Swift можно:

  1. Добавлять реализации методов - предоставлять дефолтную логику для методов, объявленных в протоколе. Например, можно реализовать метод func description() -> String, который будет использоваться, если тип не предоставит свою версию.

  2. Добавлять вычисляемые свойства - хотя хранимые свойства запрещены, можно добавить вычисляемые, например: var isEven: Bool { return self % 2 == 0 }.

  3. Добавлять сабскрипты - например, для удобного доступа к элементам коллекции.

  4. Добавлять вложенные типы - перечисления, структуры или классы внутри расширения протокола.

  5. Ограничивать расширения с помощью where - применять реализации только к типам, удовлетворяющим определенным условиям (например, extension Collection where Element: Equatable).

  6. Добавлять новые методы, не объявленные в протоколе - они становятся доступны только через конкретный тип, а не через протокольный тип.

Пример:

SWIFT
protocol Drawable {
func draw()
}
extension Drawable {
func draw() {
print("Рисуем по умолчанию")
}
func prepare() { // не объявлен в протоколе
print("Подготовка")
}
}

Важно: расширения не могут добавлять хранимые свойства, обязательные инициализаторы или переопределять существующие реализации.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью