swift - 值为 Int 但 case 可以包含数组的 Switch 语句

标签 swift if-statement switch-statement comparison

<分区>

我想将值数组作为 switch 语句的 case

我有一组值 say

let intValues = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 .... 100]

我想像这样使用 switch 语句作为比较工具。

let inputValue = 30 // or some other int value
switch inputValue {
case 101:
    // do something lol

/* ===============================  */
case intValues: // 
    // do something more:
/* ===============================  */

case 13131: 
    // do another thing
default:
    // do default
}

我知道我可以通过执行此 case 1, 2, 3, 4, 5, 等等或使用像这样的 if 语句 轻松地做到这一点:

if intValues.contains(inputValue) {
     // do something more:
} else if inputValue == 101 {
     // do something lol
} else if inputValue == 13131 {
     // do another thing
} else {
     // do default 
}

或者通过做一些类似的事情

if intValues.contains(inputValue) {
     // do something more:
} else {
    switch inputValue {
    case 101:
       // do something lol
    case 13131: 
       // do another thing
    default:
       // do default
    }
}

反之亦然

但是这可能吗?只用一个 switch 语句就可以做到这一点?

最佳答案

您可以将 case letwhere 一起使用。

let intValues = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
let inputValue = 30 // or some other int value
switch inputValue {
    case let x where intValues.contains(x):
        // do something more:
    case 101:
        // do something lol
    case 13131:
        // do another thing       
    default:
        // do default 
}

关于swift - 值为 Int 但 case 可以包含数组的 Switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42105005/

相关文章:

swift - UIDocumentPickerViewController 允许在应用程序第一次运行时选择文件,但随后不允许

java - 20 秒后退出 while 循环

ruby - 检查文件是否包含字符串

java - 满堂彩的计算方法不起作用

c# - 不同版本解析文件不同

java - 如果不使用 "return;",如何突破 void 方法

swift - 如何在2个viewController之间传递字符串?

ios - 为什么我的叠加线没有产生我在基于极坐标公式(swift,ios)的 map 中所期望的结果?

ios - UICollectionView 中单元格之间的零水平间距不起作用

javascript - 何时支持 ng-if 与 ng-show/ng-hide?