在斯威夫特,我怎么能写这样的情况,一个开关语句测试值被切换对抗的内容可选,跳过如果可选包含案例nil
?
这是我想象的样子:
let someValue = 5
let someOptional: Int? = nil
switch someValue {
case someOptional:
// someOptional is non-nil, and someValue equals the unwrapped contents of someOptional
default:
// either, someOptional is nil, or someOptional is non-nil but someValue does not equal the unwrapped contents of someOptional
}
如果我只是这样写,那么编译器会抱怨someOptional
没有解包,但是如果我通过添加!
到末尾来显式解包,那么我当然会在someOptional
包含的任何时间得到运行时错误nil
。添加?
代替!
对我来说是有意义的(我想是基于可选链接的精神),但不会使编译器错误消失(即,实际上并没有解开可选)。