当前位置: 首页 > 编程笔记 >

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

何博涛
2023-03-14
本文向大家介绍详解Swift的switch...case语句中break关键字的用法,包括了详解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”。太神奇了!

 

 类似资料:
  • 本文向大家介绍举例讲解Swift编程中switch...case语句的用法,包括了举例讲解Swift编程中switch...case语句的用法的使用技巧和注意事项,需要的朋友参考一下 Switch作为选择结构中必不可少的语句也被加入到了Swift中,只要有过编程经验的人对Switch语句都不会感到陌生,但苹果对Switch进行了大大的增强,使其拥有其他语言中没有的特性。使用Switch语句很简单:

  • 本文向大家介绍Swift编程中的switch...case语句实例解析,包括了Swift编程中的switch...case语句实例解析的使用技巧和注意事项,需要的朋友参考一下 Swift中的switch...case语句可以判断对象类型, Objective-C中则必须是整数。 不可以穿透,可以不写break, 因为不能穿透所以不能这么写 只能这么写 不能不写default default位置只能

  • 本文向大家介绍java中switch case语句需要加入break的原因解析,包括了java中switch case语句需要加入break的原因解析的使用技巧和注意事项,需要的朋友参考一下 java中switch case语句需要加入break的原因解析            java 中使用switch case语句需要加入break 做了具体的实例分析,及编译源码,在源码中分析应该如何使用,

  • 概要 <#switch value> <#case refValue1> ... <#break> <#case refValue2> ... <#break> ... <#case refValueN> ... <#break> <#default> ... </#switch> 这里: value, refVal

  • 问题内容: 我正在学习Swift的语法,想知道为什么下面的代码无法按我期望的那样工作: 我想每次将数字除以3(3、6、9、12等)时都打印Fizz,并且每次将其除以5时都打印Buzz,那么缺少哪一块拼图? 注意:我确实使用以下方法解决了问题: 我想知道如何使用Switch解决此问题。谢谢。 问题答案: FizzBu​​zz游戏的通常规则 是用“ Fizz”替换每个3的倍数,用“ Buzz”替换每个

  • 主要内容:switch 语句格式,嵌套 switch 语句,if 语句和 switch 语句的区别if…else 语句可以用来描述一个“二岔路口”,我们只能选择其中一条路来继续走,然而生活中经常会碰到“多岔路口”的情况。 switch 语句提供了 if 语句的一个变通形式,可以从多个语句块中选择其中的一个执行。 switch 语句格式 switch 语句是 Java 的多路分支语句。它提供了一种基于一个表达式的值来使程序执行不同部分的简单方法。因此,它提供了一个比一系列 if-else-if