switch 区间匹配
let 存款 = 100
var 社会评价: String
Switch 存款 {
case 1…100 : 社会评价 = “贫困”
case 101…10000 : 社会评价 = “脱贫”
case 10001…100_000 : 社会评价 = “温饱”
default : 社会评价 = “富裕”
}
switch中条件不能有冲突,switch语句会执行完第一个符合条件的语句后结束。
switch 元祖匹配
let 坐标 = (1,3)
switch 坐标 {
case (0,0) : “原点”
case (_,0) : “在X轴上”
case (0,_) : “在Y轴上”
case (-2…2,-2…2) : “在指定的值域范围内”
default : “非指定的值域范围”
}
switch 值绑定
let 坐标 = (1,4)
switch 坐标 {
case (let x,0) : “在X轴上的值是(x)”
case (0,let y) : “在Y轴上的值是(y)”
case (let x,let y) : “在X轴上的值是(x),在Y轴上的值是(y)”
} //这里的x,y是临时变量,在其他地方是失效的。
switch 值筛选
let 坐标 = (-1,2)
switch 坐标 {
case let(x,y) where x == y: “((x),(y))的横坐标和纵坐标相等”
case let(x,y) where (x > 0 && y > 0: “((x),(y))在第一象限”
case let(x,y) : “在X轴上的值是(x),在Y轴上的值是(y)”
}
控制转移语句 continue
一个循环停止,进入下一个循环,resume。
let 网址列表 = [“qq.com”,”google.hk”,”baidu.com”,”facebook.com”]
for 网址 in 网址列表 {
swtich 网址 {
case let url where (网址.hasPrefix(“facebook”) || 网址.hasSuffix(“hk”)) : continue //遇到敏感的网址直接结束本次循环,执行下一次循环。
default : println(“即将为您打开(网址)”)
}
}
break语句
与continue的区别在于continue只用于循环中,而break可以用于循环和switch中。
跳出一个循环,执行下面的语句
let 学历网址列表 = [“developer.apple.com”,
“google.com”,
“baidu.com”,
“qq.com”,
“wikipedia.org”,
“sf.net”,
“github.com”,
“jamesonquave.com”]
for 网址 in 学习网址列表 {
if 网址.hasSuffix(“qq.com”) {
break
}
println(网址)
}
//对网址进行分类
let url = “”
var 可能的网址分类 : String? //不给值默认为空
switch url {
case “developer.apple.com”,”wikipedia.org” : 可能的网址分类 = “知识库网站”
case “github.com”,”sf.net” : 可能的网址分类 = “swift源码站”
case “developer.apple.com”,”wikipedia.org” : 可能的网址分类 = “知识库网站”
case “jamesonquave.com” : 可能的网址分类 = “个人博客”
case “google.com”,”baidu.com” : 可能的网址分类 = “资料搜索”
default : break
}
if let url2 = 可能的网址分类 {
println(“这个网址是(url2)”)
} else {
println(“您的网址不是可能的swift类学习网址”)
}
println(“学习结束”)
fallthrough let 数字 = 3 switch 数字 { case 1,3,5,7,9 : print(“(数字)是1到10之间的奇数”) fallthrough default : print(“,同时也是一个整数”) } //两句都执行,结果为 3是1到10之间的奇数,同时也是一个整数