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