swift switch语句案例有不同和共享的事情要做

rdk*_*rdk 6 switch-statement control-flow ios swift

我有这样的代码

switch thing {
  case thisThing:
     do thing #1
     do thing #2
  case thatThing:
     do thing #2
     do thing #3
  case anotherThing:
     do thing #4
  default:
     default
}
Run Code Online (Sandbox Code Playgroud)

因此,每种情况都只有它能做到的事情.有些案例也与一个或多个其他案件做同样的事情.

如果我不想要任何重复的代码,有没有办法实现这一目标?

或者,有没有一个更有效的方法来做这个没有开关语句?我的意思是,我可能,例如,使用if语句,但像switch语句,我不能想办法来完成我想要的东西,而无需使用重复的代码.

此外,这个例子可能比上面更清楚

myFavoriteNumbers = []
myLeastFavoriteNumbers = []

switch myNumber {
case 1:
  print("my number is number 1") // do this only for case 1
  myFavoriteNumbers += [1] // do this for case 1 and case 2
case 2:
  print("this is number 2") // do this only for case 2
  myFavoriteNumbers += [2] // do this for case 1 and case 2
case 3:
  print("I don't like number 3") // do this only for case 3
  myLeastFavoriteNumbers += [3] // do this for case 3 and case 4
case 4:
  print("Number Four") // do this only for case 4
  myLeastFavoriteNumbers += [4] // do this for case 3 and case 4
default:
  print("Default")
}
Run Code Online (Sandbox Code Playgroud)

小智 2

您可以嵌套 switch 语句来切换相同的值,如下所示:

switch myNumber {
case 1...2:
    myFavoriteNumbers += [myNumber] // do this for case 1 and case 2
    switch myNumber {
    case 1:
        print("my number is number 1") // do this only for case 1
    default:
        print("this is number 2") // do this only for case 2
    }
case 3...4:
    myLeastFavoriteNumbers += [myNumber] // do this for case 3 and case 4
    switch myNumber {
    case 3:
        print("I don't like number 3") // do this only for case 3
    default:
        print("Number Four") // do this only for case 4
    }
default:
    print("Default")
}
Run Code Online (Sandbox Code Playgroud)

这不是您所见过的最优雅的代码,但它无需重复即可实现您想要实现的目标。