W Swift, jak mogę napisać case w instrukcji switch, która testuje wartość przełączaną na zawartość opcjonalnie , pomijając przypadek, jeśli opcjonalny zawiera nil
?Swift: testowanie wartości opcjonalnej w przypadku przełącznika
Oto jak sobie wyobrazić, że to może wyglądać:
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
}
Gdybym tylko napisać go dokładnie tak, kompilator narzeka, że someOptional
nie jest rozpakowany, ale jeśli wyraźnie rozpakować go dodając !
do końca, Oczywiście pojawia się błąd runtime w dowolnym momencie someOptional
zawiera nil
. Dodanie ?
zamiast !
mogłoby mieć dla mnie sens (w duchu opcjonalnego łączenia, jak przypuszczam), ale nie powoduje, że błąd kompilatora zniknie (tj. W rzeczywistości nie rozwija opcjonalnego).
Należy zauważyć, że w Swift 3, niektóre/none są małe, to znaczy, że używasz .some zamiast .Some – Adam