标签:
for i in 0...10{
switch i{
case 0:
print(i)
break
case 1:
print("能不能继续走2")
case 2:
print("2走了")
break
case 3,4:
print(i)
case 5:
print(i)
break
//使用新的关键字fallthrough能使Switch在执行完一个case之后,紧接着执行下一条case。
case 6:
print(i)
fallthrough
//fallthrough并不是在任何情况下都有效,当你在Switch里使用ValueBinding技术的时候,fallthrough就被禁止了。Value Binding在下面会讲到。
case 7:
print(i)
break
case :1.5
break
//Swift的Switch语句一定要涵盖所有的情况,这并不是说一定要有default,只要上面的case能满足所有的情况,就可以不用写default。
default:
print("default\(i)")
break
//Switch当然也支持显式的break,通常只有一种情况下你会这么做,那就是当你也不想在default里做任何事情的时候,这个时候你就可以在default里显式地加上一句break。
}
}
//在Objective-C里,Switch语句只能支持整形的数据(或者一个字符),但是在Swift里,Switch能支持多种数据类型,包括浮点、布尔、字符串等.可以说是史上支持数据类型最多的Switch了。
//支持浮点:
let float = 1.5
switch float {
case 1.5:
"1.5"
default:
"default"
}
//支持布尔:
let isSuccess = true
switch isSuccess {
case true:
"true" //被输出
default:
"default"
}
//支持字符串:
let name = "Bannings"
switch name {
case "Bannings":
"Bannings" //被输出
default:
"default"
}
//支持区间运算符 不仅仅是循环结构里可以用区间运算符,在Switch里同样可以用区间运算符:
var i = 15
switch i {
case 0 ... 10:
"0~10"
case 11 ... 20:
"11~20" //被输出
default:
"default"
}
//支持元组 作为被大大增强的Switch,元组也是被支持的:
let request = (true,"success")
switch request {
case (true, "success"):
"success" //被输出
case (false, "failed"):
"failed"
default:
"default"
}
//使用元组和使用其他数据类型一致,不过元组还有一项特点,对于不想关心的值,可以用下划线_跳过,如:
let (name2, _,age2) = ("Bannings" ,true, 22)
let request2 = (true,"success")
switch request2 {
case (_, "success"):
"success" //被输出
case (false, _):
"failed"
default:
"default"
}
//对于不关心的值跳过,只要满足另一个值就行了。需要注意一点的是,如果元组中的值也是数字类型,那么也是可以用区间运算符的:
let request3 = (10,"failed")
switch request3 {
case (_, "success"):
"success"
case (1 ... 10, _):
"1~10" //被输出
default:
"default"
}
//ValueBinding
//针对元组,Switch还支持类似于Optional Binding的Value Binding,就是能把元组中的各个值提取出来,然后直接在下面使用:
let requestBinding = (0,"success")
switch requestBinding {
case (0, let state):
state //被输出:success
case (leterrorCode, _):
"errorcode is \(errorCode)"
} // 涵盖了所有可能的case,不用写default了
//这样也是可以的:
let requestBinding2 = (0,"success")
switch requestBinding2 {
case let(errorCode, state):
state //被输出:success
case (leterrorCode, _):
"errorcode is \(errorCode)"
}
//把let放在外面和放在里面为每一个元素单独写上let是等价的。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/qi_ruihua/article/details/47329935