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