c语言中break可以用在swift,详解Swift的switch...case语句中break关键字的用法

与Objective-C中这部分内容相比,在Swift中switch得到了极大的改善。这是一件非常有趣的事,因为这还是没有添加到Objective-C中,还是没有打破Objective-C是C的超集的事实。

第一件令人兴奋的地方是可以对字符串转换。这也许正是你之前想要做,却不能做的事。在Objective-C中如果要对字符串用“switch”,你必须要使用多个if语句,同时要用isEqualToString:,像下面这样:

if ([person.name isEqualToString:@"Matt Galloway"]) {

NSLog(@"Author of an interesting Swift article");

} else if ([person.name isEqualToString:@"Ray Wenderlich"]) {

NSLog(@"Has a great website");

} else if ([person.name isEqualToString:@"Tim Cook"]) {

NSLog(@"CEO of Apple Inc.");

} else {

NSLog(@"Someone else);

}

这样可阅读性不强,也要打很多字。同样的功能在Swift中实现如下:

switch person.name {

case "Matt Galloway":

println("Author of an interesting Swift article")

case "Ray Wenderlich":

println("Has a great website")

case "Tim Cook":

println("CEO of Apple Inc.")

default:

println("Someone else")

}

除了对字符串可以使用switch之外,请注意这里一些有趣的事情。没有看见break。因为在switch中一个case语句执行完成后就不再向下执行。不会再偶然地出现bug!

再比如这样的情况下

let vegetable = "red pepper"

switch vegetable{

case "celery":

let vegetableComment = "Add some raisins and make ants on a log."

case "cucumber","watercress":

let vegetableComment = "That would make a good tea sandwich."

//switch支持所有类型的数据,以及多种比较运算——没有限制为必须是整数,也没有限制为必须测试相等(tests for equality 真的是这样翻译的吗?)

case let x where x.hasSuffix("pepper"):

let vagetableComment = "Is it a spicy \(x)?"

//switch语句要求必须覆盖所有的可能,否则报错'switch must be exhaustive, consider adding a default cla'

default:

print("不能没有default")

}

不需要写break,

执行完匹配到的case后,程序会跳出switch,而不是继续执行下一个case,所以不需要在case的代码后面添加break来跳出switch。

下面的switch语句可能会扰乱你的思路,所以准备好了!

switch i {

case 0, 1, 2:

println("Small")

case 3...7:

println("Medium")

case 8..10:

println("Large")

case _ where i % 2 == 0:

println("Even")

case _ where i % 2 == 1:

println("Odd")

default:

break

}

首先,这出现了一个break。因为switch必须要全面而彻底,它们需要处理所有的情况。在这种情况下,我们想要default时不做任何事,所以放置了一个break来表明此处不应该发生任何事。

接下来有趣的事情是你在上面看到的…和..,这些是新的操作符,用于来定义范围。前者用来定义范围包括右边的数字,后者定义的范围不包括右边的数字。它们真是超乎想象地有用。

最后一件事是可以把case定义成对输入值的计算。在上面这种情况下,如果这个值不匹配从0到10,如果是偶数打印“Even”,是奇数打印“Odd”。太神奇了!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值