在下面的示例中,为什么我必须在(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)
}
答案 0 :(得分:0)
这称为值绑定。 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)
}
答案 1 :(得分:0)
我正在尝试理解语法
没有什么可以理解的。只需 是从枚举案例中提取相关值的语法。当你玩Calvinball时,它就像面具一样 - 没有人被允许质疑它们。
现在,你可能会反对这种语法有点笨拙和讨厌。你必须通过switch语句的rigmarole来拉出相关的值?!?这是一个非常有效的抱怨,自从斯威夫特于2014年6月揭幕以来,人们一直在制作它,而且苹果公司的人都知道它有点奇怪,可能会在未来改变它。但就目前而言,这就是语法,而且所有这一切都需要了解它。