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 someOptionalnão foi desembrulhado, mas se eu desembrulhar explicitamente adicionando !ao final, é claro que recebo um erro de tempo de execução sempre que someOptionalconté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).