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 someOptionalno 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 someOptionalcontenga 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).