请参阅分支中switch语句的值

时间:2017-03-13 14:32:10

标签: swift

Swift中有没有办法引用我在分支中打开的值?例如:

switch UIDevice.current.userInterfaceIdiom {
  // cases
  default:
    fatalError("User interface idiom \(value) is not supported")
}

我正在考虑类似于error块内隐式catch引用的内容:

do {
  // ...
} catch {
  print(error) // 'error' is defined implicitly
}

当然,我可以自己创建一个变量,但我想避免这种情况。

1 个答案:

答案 0 :(得分:2)

没有内置变量,但您可以使用case let模式轻松捕获值:

switch UIDevice.current.userInterfaceIdiom {
  // cases
case let value:
    fatalError("User interface idiom \(value) is not supported")
}

注意:这会匹配任何内容,因此它会替换default案例,它应该是case中的最后一个switch

您可以使用where子句来捕获所有内容以外的值

switch 1 + 2 * 3 {
case let value where 0...9 ~= value:
    print("The value \(value) is a single digit value")
case let value:
    print("\(value) is not a single digit value.")
}

但在这种情况下,只是在switch之前将值赋给变量会更容易。