Em Swift, como posso escrever um caso em uma instrução switch que testa o valor sendo alternado em relação ao conteúdo de um opcional , ignorando o caso se o opcional contiver nil
?
Veja como eu imagino que isso seja:
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
}
Se eu apenas escrever exatamente assim, o compilador reclamará que someOptional
não foi desembrulhado, mas se eu desembrulhar explicitamente adicionando !
ao final, é claro que recebo um erro de tempo de execução sempre que someOptional
contém nil
. Adicionar em ?
vez de !
faria algum sentido para mim (no espírito do encadeamento opcional, eu suponho), mas não faz com que o erro do compilador desapareça (ou seja, não desembrulha o opcional).