Для чего используется ключевое слово `where` в Swift?

«Для чего используется ключевое слово `where` в Swift?» — вопрос из категории Swift Core, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Ключевое слово where в Swift добавляет дополнительные условия в различных контекстах, делая код более выразительным и безопасным.

Основные контексты использования:

  1. В операторе switch — для уточнения условий case с помощью шаблонов:

    let value = 5
    switch value {
    case let x where x > 0:
        print("Положительное число")
    case let x where x < 0:
        print("Отрицательное число")
    default:
        print("Ноль")
    }
  2. В циклах for-in — для фильтрации итераций:

    for number in 1...10 where number % 2 == 0 {
        print(number) // Выведет: 2, 4, 6, 8, 10
    }
  3. В дженериках (обобщениях) — для ограничений на типы (type constraints):

    func process<T>(_ value: T) where T: Numeric, T: Comparable {
        // Функция работает только с типами, соответствующими
        // протоколам Numeric и Comparable
    }

    Также используется для ограничений ассоциированных типов в протоколах.

  4. В блоках catch — для фильтрации перехватываемых ошибок по условию:

    do {
        try someThrowingFunction()
    } catch let error where error is NetworkError {
        // Обрабатываем только ошибки типа NetworkError
    } catch {
        // Все остальные ошибки
    }

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