概述
Swift中的switch语句与Java等语言中的switch有很大的相似点,但是也有不同的地方,并且更加灵活。
Swift中switch的case语句中不需要添加break Swift中需要考虑所有情况,default是必要的。 case分支可以添加多个条件,用,分割 case不局限与常量,可以使使用范围 switch里可以使用元组 switch默认不需要添加break,执行一个case之后就跳出语句,如果想要继续下面的语句可以使用fallthrough,但是fallthrough是直接进入下一个case的语句,不会进行case的判断。感觉这里好坑。
实例代码
1、不需要break,case里多个值用,分割。default不能省略
let name = "yangqiangyu"@H_404_13@
switch@H_404_13@ name{
case@H_404_13@ "yangqiangyu"@H_404_13@,"yqy"@H_404_13@:
print@H_404_13@("This is my name"@H_404_13@)
default@H_404_13@:
print@H_404_13@("This is not my name"@H_404_13@);
}
//"This is my name\n"@H_404_13@
2、case条件里用范围表达式
let score = 90@H_404_13@;
switch@H_404_13@ score{
case@H_404_13@ 0@H_404_13@:
print@H_404_13@("you got an egg"@H_404_13@)
case@H_404_13@ 1.@H_404_13@.<60@H_404_13@:
print@H_404_13@("you Failed"@H_404_13@)
case@H_404_13@ 60@H_404_13@:
print@H_404_13@("Just passed"@H_404_13@)
case@H_404_13@ 61.@H_404_13@.<80@H_404_13@:
print@H_404_13@("Just so so"@H_404_13@)
case@H_404_13@ 80.@H_404_13@.<90@H_404_13@:
print@H_404_13@("Good"@H_404_13@)
case@H_404_13@ 90.@H_404_13@.<100@H_404_13@:
print@H_404_13@("Great"@H_404_13@)
case@H_404_13@ 100@H_404_13@:
print@H_404_13@("Perfect!"@H_404_13@)
default@H_404_13@:
print@H_404_13@("Error"@H_404_13@)
}
//输出结果:"Great\n"@H_404_13@
3、switch使用元组
let point:(x:Int,y:Int) = (x:1@H_404_13@,y:1@H_404_13@)
switch@H_404_13@ point{
case@H_404_13@ (0@H_404_13@,0@H_404_13@):
print@H_404_13@("It's a origin"@H_404_13@)
case@H_404_13@ (_,0@H_404_13@)://忽略point中的x值@H_404_13@
print@H_404_13@("It's on x-axis."@H_404_13@)
case@H_404_13@ (0@H_404_13@,_)://忽略point中的y值@H_404_13@
print@H_404_13@("It's on y-axis"@H_404_13@)
default@H_404_13@:
print@H_404_13@("It's just an ordinary point"@H_404_13@)
break@H_404_13@
}
//输出结果:@H_404_13@
"It's just an ordinary point\n"@H_404_13@
4.switch中的case中需要使用元组中的值
let@H_404_13@ point2 = (8@H_404_13@,0@H_404_13@)
switch@H_404_13@ point2{
case@H_404_13@ (0@H_404_13@,0@H_404_13@):
print@H_404_13@("It's a origin"@H_404_13@)
case@H_404_13@ (let@H_404_13@ x,0@H_404_13@)://@H_404_13@赋值给x
print@H_404_13@("It's on x-axis."@H_404_13@)
print@H_404_13@("The x value is \(x)"@H_404_13@)
case@H_404_13@ (0@H_404_13@,let@H_404_13@ y)://@H_404_13@赋值给y
print@H_404_13@("It's on y-axis"@H_404_13@)
print@H_404_13@("The y value is \(y)"@H_404_13@)
case@H_404_13@ (let@H_404_13@ x,let@H_404_13@ y):
print@H_404_13@("The x value is \(x)"@H_404_13@)
print@H_404_13@("The y value is \(y)"@H_404_13@)
}
//@H_404_13@输出结果:
"It's on x-axis.\n"@H_404_13@
"The x value is 8\n"@H_404_13@
5.fallthrough使用
let score = 90@H_404_13@;
switch@H_404_13@ score{
case@H_404_13@ 0@H_404_13@:
print@H_404_13@("you got an egg"@H_404_13@)
case@H_404_13@ 1@H_404_13@..<60@H_404_13@:
print@H_404_13@("you Failed"@H_404_13@)
case@H_404_13@ 60@H_404_13@:
print@H_404_13@("Just passed"@H_404_13@)
case@H_404_13@ 61@H_404_13@..<80@H_404_13@:
print@H_404_13@("Just so so"@H_404_13@)
case@H_404_13@ 80@H_404_13@..<90@H_404_13@:
print@H_404_13@("Good"@H_404_13@)
case@H_404_13@ 90@H_404_13@..<100@H_404_13@:
print@H_404_13@("Great"@H_404_13@)
fallthrough@H_404_13@
case@H_404_13@ 100@H_404_13@:
print@H_404_13@("Perfect!"@H_404_13@)
default@H_404_13@:
print@H_404_13@("Error"@H_404_13@)
}
//输出@H_404_13@
"Great\n"@H_404_13@
"Perfect!\n"@H_404_13@
总结
可以发现,Swift中的switch更加灵活和简洁,使用switch可以方便的处理很多操作。