使用特点:
2) case 可以where判断
let domainName = "eqi.cc"
switch domainName {
case "eqi.cc","cxck.com":
println("eqi.cc")
fallthrough
println("没有执行")
case "zhece.com":
println("zhece.com")
case let bloc where domainName.hasPrefix("e"):
println("country.hasPrefix.e")
fallthrough
default:
println("default")
}
但是对于fallthrough并不是都可以写上比如:
'fallthrough' cannot transfer control to a case label that declares variables
说明: fallthrough后面不可以定义常量和变量(紧挨着它一个case),在后几个case可以定义常量变量
why?: 第一个case执行完后(输出“eqi.cc”)会直接执行下一个case,而下一个case条件里定义了临时变量bloc,这样就导致直接从上一个case进来的并没有这个变量bloc,那如果case语句里用到了bloc,很明显就会出错。swift这么要求安全的一种语言自然是不允许发生这种事情的 (why来源:This is Link)
先说下fallthrough,它就是goto 直接 goto label 实则:
var wnq = 26
switch (wnq) {
case 0:
goto case 1
case 1:
goto default
default:
break;
}
b) 这里还可以包含区间范围判断例子:
let somePoint = (1, 1)
switch somePoint {
case (0, 0):
println("(0, 0) is at the origin")
default:
println("(\(somePoint.0), \(somePoint.1)) is outside of the box")
}