Switch statement where value is Int but case can contain array [duplicate]

谁说胖子不能爱 提交于 2019-12-11 08:09:58

问题


I want to put my array of values as a case for my switch statement

I have an array of values say

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

and I want to use a switch statement to be used as a comparison tool like so.

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
}

I know I can do this easily by either doing this case 1, 2, 3, 4, 5, and so on or by using an if statement like so:

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

or by doing somethig like

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

and vice versa

But is it possible though? to do it with just a switch statement?


回答1:


You can use case let with where for that.

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 
}



回答2:


You can do this with range operator.

let inputValue = 30
   switch value {
   case 1...100:
     print("between hundred")
   case 101:
     print("it's 101")
   default:
     print("outer value")
}



回答3:


You should just use a countable closed range in your switch cases:

let inputValue = 30
switch inputValue {
case 1...10:
    print(1...10)
case 11...20:
    print(11...20)  
case 21...100:
    print(21...100)   // "21...100\n" 
default:
    print("default")
}


来源:https://stackoverflow.com/questions/42105005/switch-statement-where-value-is-int-but-case-can-contain-array

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!