En Swift, ¿cómo puedo escribir un caso en una declaración de cambio que prueba el valor que se cambia con el contenido de un opcional , omitiendo el caso si el opcional contiene nil
?
Así es como me imagino que esto podría verse:
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
}
Si lo escribo exactamente así, el compilador se queja de que someOptional
no se desenvuelve, pero si lo desenvuelvo explícitamente agregando !
al final, por supuesto, obtengo un error de tiempo de ejecución en cualquier momento que someOptional
contenga nil
. Agregar en ?
lugar de !
tendría algún sentido para mí (en el espíritu del encadenamiento opcional, supongo), pero no hace que el error del compilador desaparezca (es decir, en realidad no desenvuelve el opcional).