在 Swift 中:下面的示例为什么我必须在 .代码成功工作



在下面的示例中,为什么我必须将(let one)放在.Success旁边才能使代码正常工作?为什么不(let = one)或只是(one)?我正在尝试理解语法。

enum Status {
    case Success(String)
    case Failure(String)
}
let downloadStatus = Status.Failure("Network connection unavailable")
switch downloadStatus {
case .Success(let one):
    println(one)
case .Failure(let two):
    println(two)
}

这称为值绑定enum 值中包含的值临时绑定到case中的变量。 如果使用let则值将绑定到常量,如果使用var值将绑定到变量。

let downloadStatus = Status.Failure("Network connection unavailable")
switch downloadStatus {
case .Success(let one):
    println(one)
case .Failure(var two):
    two += "!!!"  // two is a var, so I can modify it
    println(two)
}

我正在尝试理解语法

没有什么可理解的。这只是从枚举案例中提取关联值的语法。这就像你玩加尔文球时的面具——没有人被允许质疑它们。

现在,您可能会反对这种语法有点笨拙和烦人。您必须经历 switch 语句的严格操作才能提取出关联的值?!?这是一个完全合理的抱怨,自从 Swift 于 2014 年 6 月推出以来,人们一直在这样做,苹果公司的人知道这有点奇怪,将来可能会改变它。但就目前而言,这就是语法,这就是所有需要了解的。

最新更新