In Swift, come posso scrivere un caso in un'istruzione switch che verifica il valore scambiato rispetto al contenuto di un facoltativo , saltando il caso se l'opzionale lo contiene nil
?
Ecco come immagino che potrebbe apparire:
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
}
Se lo scrivo esattamente in questo modo, il compilatore si lamenta che someOptional
non è scartato, ma se lo scarto esplicitamente aggiungendolo !
alla fine, ovviamente ottengo un errore di runtime ogni volta che someOptional
contiene nil
. Aggiungere ?
invece di !
avrebbe un senso per me (nello spirito del concatenamento opzionale, suppongo), ma non fa sparire l'errore del compilatore (cioè non scartare effettivamente l'opzionale).