迅速的情况下通过
迅速有声明吗? 如果我做了以下
var testVar = "hello" var result = 0 switch(testVal) { case "one": result = 1 case "two": result = 1 default: result = 3 }
是否有可能为“一”和“两”情况执行相同的代码?
是。 你可以这样做,如下所示:
var testVal = "hello" var result = 0 switch testVal { case "one", "two": result = 1 default: result = 3 }
或者,您可以使用fallthrough
关键字:
var testVal = "hello" var result = 0 switch testVal { case "one": fallthrough case "two": result = 1 default: result = 3 }
case "one", "two": result = 1
没有断言,但情况更加灵活。
附录:正如Analog File指出的那样,Swift中实际上有break
语句。 它们仍然可以在循环中使用,尽pipe在switch
语句中是不必要的,除非你需要填充一个空的情况,因为空的情况是不允许的。 例如: default: break
。
var testVar = "hello" switch(testVar) { case "hello": println("hello match number 1") fallthrough case "two": println("two in not hello however the above fallthrough automatically always picks the case following whether there is a match or not! To me this is wrong") default: println("Default") }
在案例结束时,关键字贯穿问题会导致您正在寻找的贯穿行为,并且可以在一个案例中检查多个值。
这里是你容易理解的例子:
let value = 0 switch value { case 0: print(0) // print 0 fallthrough case 1: print(1) // print 1 case 2: print(2) // Doesn't print default: print("default") }
结论:使用fallthrough
执行下一个案件(只有一个),当前一个案件fallthrough
是否匹配。
- 如何创build一个格式的string?
- 在Swift中,NSLocalizedString等价于什么?
- facebooklogin问题 – canOpenURL:URL失败:“fbauth2:///” – 错误:“(null)”
- 为什么表情符号像👩👩👧👦在Swift中被如此奇怪地对待?
- 如何将TextField添加到Swift中的UIAlertController
- 我可以在同一个Xcode项目中使用Swift,Objective-C,C和C ++文件吗?
- 用phimagemanager保存图像到自定义相册?
- 在Swift中将xib分配给UIView
- UITableView – 与Swift的registerClass