将枚举类型值分配给属性时出现switch语句错误

时间:2019-04-20 19:15:36

标签: swift

我正在尝试使用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
        }
    }()
}

预期结果:无错误 实际结果:错误(即使存在“:”)

2 个答案:

答案 0 :(得分:1)

在关键字case之前不需要关键字default。这就是switch语句在Swift中的工作方式。

只需在case之前删除default即可解决您的问题。


以下代码段无效

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

有效代码:

switch number {
case 1:
    break
default:
    break
}

请注意,case之前没有default关键字。


要了解有关switchSwift语句如何工作的更多信息,请阅读official documentation

答案 1 :(得分:0)

您无需检查任何内容,只需要在无人满意的情况下进行处理即可。为此,只需使用default关键字。

default:
   return .unknown