Как в Swift я могу написать регистр в операторе switch, который проверяет переключаемое значение на содержание необязательного , пропуская регистр, если необязательный параметр содержит nil?
Вот как я себе это представляю:
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
}
Если я просто пишу это именно так, компилятор жалуется , что someOptionalне разворачивали, но если я явно разворачивать его, добавив !к концу, я, конечно , получаю ошибку во время выполнения в любое время someOptionalсодержит nil. Добавление ?вместо !имело бы для меня некоторый смысл (я полагаю, в духе необязательной цепочки), но не устраняет ошибку компилятора (т.е. фактически не разворачивает необязательное).