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 someOptionalnon è scartato, ma se lo scarto esplicitamente aggiungendolo !alla fine, ovviamente ottengo un errore di runtime ogni volta che someOptionalcontiene 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).