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
}
当然,我可以自己创建一个变量,但我想避免这种情况。
答案 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
之前将值赋给变量会更容易。