1.switch case
switch 语句会尝试把某个值与若干个模式(pattern)进行匹配。根据第一个匹配成功的模式,switch 语句会执行对应的代码。当有可能的情况较多时,通常用 switch 语句替换 if 语句。switch 默认没有贯穿效果。
var a = "胡辣汤"
switch a {
case "胡辣汤":
print("今天的早饭是胡辣汤 \n")
case "重庆小面":
print("今天的早饭是重庆小面")
default:
print("今天没吃早饭")
}
switch 语句必须是完备的。这就是说,每一个可能的值都必须至少有一个 case 分支与之对应。在某些不可能涵盖所有值的情况下,你可以使用默认(default)分支来涵盖其它所有没有对应的值,这个默认分支必须在 switch 语句的最后面。
//下面的例子使用 switch 语句来匹配一个名为 someCharacter 的小写字符:
let someCharacter: Character = "z"
switch someCharacter {
case "a":
print("The first letter of the alphabet")
case "z":
print("The last letter of the alphabet")
default:
print("Some other character")
}
// 输出“The last letter of the alphabet”
2.fallthrough 贯穿
在 Swift 里,switch 语句不会从上一个 case 分支跳转到下一个 case 分支中。相反,只要第一个匹配到的 case 分支完成了它需要执行的语句,整个 switch 代码块完成了它的执行。相比之下,C 语言要求你显式地插入 break 语句到每个 case 分支的末尾来阻止自动落入到下一个 case 分支中。Swift 的这种避免默认落入到下一个分支中的特性意味着它的 switch 功能要比 C 语言的更加清晰和可预测,可以避免无意识地执行多个 case 分支从而引发的错误。
以一个简单的例子来展示一下fallthrough的贯穿效果
//含有fallthrough
var b = 10
print("含有fallthrough:")
switch b {
case 10:
print("情况1")
fallthrough
case 20:
print("情况2")
default:
print("未能匹配")
/*输出结果:
含有fallthrough:
情况1
情况2
*/
3.关于Swich Case的扩展用法
3.1 Case匹配多个值的情况
//Case匹配多个值的情况
var c = "a"
print("单项中有多个条件/值的情况")
switch c {
case "a","b","c":
print("情况1")
case "e","f":
print("情况2")
default:
print("未能匹配")
}
3.2判断条件为元组
//Case为元组
var d = ("hello",10) //定义元组
switch d {
case ("hello",10):
print("情况1 ")
case ("hello",20):
print("情况2")
default:print("未能匹配")
}
3.3判断条件为区间运算符
var e = 7
switch e {
case 1..<6:
print("情况1 ")
case 6..<10:
print("情况2")
default:
print("未能匹配")
}
3.4元组内拆分
var value = (10,20)
switch value {
//条件1
case let(name1,name2):
print("name1=\(name1)")
print("name2=\(name2)")
//条件2 这里
case var(10,name3):
print("name3=\(name3)")
default:
print("其他情况")
}
/*输出结果:
name1=10
name2=20 */
3.4额外添加where条件
var value2 = (10,20)
switch value2 {
case let(name1,name2) where name1>name2:
print("name1=\(name1)")
print("name2=\(name2)")
case var(10,name3):
print("name3=\(name3)")
default:
print("其他情况")
}
本章总结:讲解了switch case的用法和fallthrough,switch可以包含多种条件,可以是多个数值同时在一个case中进行判断;也可以将元组进行拆分之后赋值进行判断,同时还可以在case中添加where条件再一步进行额外的判断。fallthrough贯穿:简单的来说就是继续向下执行一个case
版权声明:本文为Panda_Stars原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。