Ошибка получения оператора switch при назначении значения типа enum свойству - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь присвоить тип значения 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
        }
    }()
}

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

Ответы [ 2 ]

1 голос
/ 20 апреля 2019

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

Просто удалите case перед default, чтобы решить вашу проблему.Следующий фрагмент кода: НЕ действителен :

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

Действителен код:

switch number {
case 1:
    break
default:
    break
}

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

0 голосов
/ 21 апреля 2019

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

default:
   return .unknown
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...