Swift 3.0-Switch语句没有默认语句获取错误' Switch必须是详尽的,考虑添加默认条款'

时间:2016-08-04 09:30:28

标签: switch-statement swift3

以下是用于在playground中执行Switch语句的代码。我执行了几个switch语句而没有使用default。我怀疑的是为什么它对某些人来说是可选的而且对于其他陈述是强制性的。谢谢你!

let someNumber = 3.5

switch someNumber {

case 2 , 3 , 5 , 7 , 11 , 13 :
  print("Prime numbers")
case 4 , 6 , 24 , 12 , 66 :
  print("Normal numbers")

 }

计数器语句成功执行,不使用默认

  let yetAnotherPoint = (3,1)

  switch yetAnotherPoint {

  case let (x,y) where x == y :
   print("(\(x),\(y)) is on the line x == y")
  case let (x,y) where x == -y :
   print("(\(x),\(y)) is on the line x == -y")
  case let (x,y):
   print("(\(x),\(y)) is just some arbitrary point")

   }

2 个答案:

答案 0 :(得分:9)

正如评论中所述,您应该使用default,因为在您的情况下,您不会暴露所有可能的双倍。但如果你更喜欢你在第二个例子中所做的方式,你可以这样做:

let someNumber = 3.5
switch someNumber {
case 2 , 3 , 5 , 7 , 11 , 13 :
    print("Prime numbers")
case 4 , 6 , 24 , 12 , 66 :
    print("Normal numbers")
case let x:
    print("I also have this x = \(x)")
}

仅供参考,以下是此方案最常处理的方式:

let someNumber = 3.5
switch someNumber {
case 2 , 3 , 5 , 7 , 11 , 13 :
    print("Prime numbers")
case 4 , 6 , 24 , 12 , 66 :
    print("Normal numbers")
default:
    print("I have an unexpected case.")
}

答案 1 :(得分:1)

            default:
            1 == 1

上帝知道您为什么需要默认设置。