Получение ошибки инструкции switch при присвоении значения типа перечисления свойству

#swift

#swift

Вопрос:

Я пытаюсь присвоить тип значения enum свойству структуры с помощью оператора switch. Я полагаю, что у меня правильно написан синтаксис (с «:» после каждого оператора case), однако я все еще получаю ошибку в операторе «default:». Ошибка гласит: «Ожидается ‘:’ после ‘case'» Кто-нибудь знает, что является причиной этого?

Я не уверен, что еще попробовать.

 struct Town {

    enum Size {
        case small
        case medium
        case large
        case unknown
    }

    // structure properties
    let region = "South"
    var population: Int = 5_422
    var numberOfStoplights: Int = 4
    var name: String?
    lazy var townSize: Size = {
        switch self.population {
        case 0...10000:
            return Size.small
        case 10001...100000:
            return Size.medium
        case let pop where pop >= 100001:
            return Size.large
        case default:    //***********ERROR: Expected ':' after 'case'
            return Size.unknown
        }
    }()
}
  

Ожидаемые результаты: ошибки нет
Фактические результаты: ошибка (даже если «:» существует)

Ответ №1:

Вам не нужно case ключевое слово перед default ключевым словом. Именно так switch работают операторы Swift .

Просто удалите case before default , чтобы решить вашу проблему.


Следующий фрагмент кода недопустим:

 switch number {
case 1:
    break
case default:
    break
}
  

Допустимый код:

 switch number {
case 1:
    break
default:
    break
}
  

Обратите внимание, что раньше не case было ключевого default слова .


Чтобы узнать больше о том, как switch работают инструкции Swift , прочитайте официальную документацию.

Ответ №2:

Вы ничего не проверяете, вам просто нужно обработать, когда ни один случай не удовлетворяет. Для этого просто используйте default ключевое слово.

 default:
   return .unknown