Dans Swift, comment puis-je écrire un cas dans une instruction switch qui teste la valeur commutée par rapport au contenu d'un optionnel , en sautant le cas si le optionnel contient nil?
Voici à quoi j'imagine que cela pourrait ressembler:
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 je viens d' écrire exactement comme ça, le compilateur se plaint que someOptionaln'est pas déballés, mais si je explicitement Déballer en ajoutant !à la fin, je cours d'obtenir une erreur d'exécution tout moment someOptionalcontient nil. Ajouter à la ?place de !aurait du sens pour moi (dans l'esprit du chaînage optionnel, je suppose), mais ne fait pas disparaître l'erreur du compilateur (c'est-à-dire qu'il ne déballe pas réellement l'option).