Обработка ассоциированных данных в перечислении

Используйте pattern matching case .loading(let progress), а остальные случаи обработайте отдельно. В примере извлечённое значение равно 0.5.

Короткий ответ

Что ответить на собеседовании

Используйте pattern matching case .loading(let progress), а остальные случаи обработайте отдельно. В примере извлечённое значение равно 0.5.

Подробный разбор

Ответ с пояснениями

Условие

Создай конструкцию switch, которая извлекает значение progress из перечисления.

enum NetworkResponse {
    case success(data: Data)
    case failure(error: Error)
    case loading(progress: Double)
}

let networkResult: NetworkResponse = .loading(progress: 0.5)

switch networkResult {
    // реализуй извлечение progress
}

Ответ

Используйте pattern matching case .loading(let progress), а остальные случаи обработайте отдельно. В примере извлечённое значение равно 0.5.

switch networkResult {
case .loading(let progress):
    print(progress)
case .success(let data):
    print("Получено байт: \(data.count)")
case .failure(let error):
    print("Ошибка: \(error.localizedDescription)")
}

Switch исчерпывающе покрывает все варианты enum. progress — локальная константа только ветки loading; присваивание нового значения этой константе не меняет исходный NetworkResponse. Если интересует только загрузка, возможна краткая форма if case .loading(let progress) = networkResult, но для полной обработки результата switch удобнее.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее