gpt4 book ai didi

详解Swift的switch...case语句中break关键字的用法

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章详解Swift的switch...case语句中break关键字的用法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

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

?
1
2
3
4
5
6
7
8
9
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中实现如下:

?
1
2
3
4
5
6
7
8
9
10
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! 。

再比如这样的情况下 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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语句可能会扰乱你的思路,所以准备好了! 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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”。太神奇了! 。

最后此篇关于详解Swift的switch...case语句中break关键字的用法的文章就讲到这里了,如果你想了解更多关于详解Swift的switch...case语句中break关键字的用法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com