Eu estou trabalhando numa aplicação e preciso verificar se um optional é nil para decidir se executo um comando.
Neste caso, a melhor forma é mesmo if variavel != nil correto?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Eu estou trabalhando numa aplicação e preciso verificar se um optional é nil para decidir se executo um comando.
Neste caso, a melhor forma é mesmo if variavel != nil correto?
Suponha a seguinte variável do tipo String optional:
var variavel : String?Eu quero escrever essa string em minúsculas, somente se ela existir. Então, posso fazer como você disse:
if variavel != nil {
variavel.lowecased()
}Porém, o Swift nos permite um atalho quando queremos chamar um método numa variável optional somente se ela não for nula:
variavel?.lowercased()Esse recurso chamado optional chaining representa o mesmo que o if: se variavel não for nula, chama o método lowercased(), do contrário, não faz nada.
Se a variável for usada dentro do if/else:
if variavel != nil {
metodo(variavel!)
}Você pode fazer uso do if-let:
if let variavelNaoNula = variavel {
metodo(variavelNaoNula)
}(Veja que não precisamos fazer o unboxing, pois o if-let já fez isso)
Temos também o guard que é semelhante ao if-let:
guard let variavelNaoNula = variavel else { return; }
metodo(variavelNaoNula); O legal do guard é que eliminamos um nível de identação no código. É bastante usado para verificação de erros, tratamento de inputs, onde ficaríamos com um monte de ifs encadeados.
Agora, no seguinte cenário em que a variavel não é usada dentro do if/else não tem muito o que fazer:
if variavel != nil {
metodo1()
} else {
metodo2()
}
Muito obrigado Felipe!