У 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
. Додавання ?
замість цього !
мало б для мене певний сенс (я думаю, в дусі додаткового ланцюжка), але помилка компілятора не зникає (тобто насправді не розгортає необов’язкову).