No último post falamos sobre o uso do IF para validação de condicional. Hoje vamos falar um pouco sobre o Guard.
Ele segue a mesma idéia de validar o resultado da condicional se verdadeiro ou falso. Mas a diferença do IF é que se for verdadeiro, ele sai do bloco. Veja a montagem dele:
guard condicao else {
// condição falsa
return
}
// condição verdadeira
Um ponto muito importante, nós devemos sempre utilizar alguma interrupção para sair do nosso escopo, são eles:
return Usado para sair do escopo sem emitir um erro
break Usado para sair do escopo no caso de enums
continue Usado para ir para próxima iteração do laço de repetição
throw Usado para lançar um erro
O guard obriga ter uma interrupção para encerrar o escopo dele, por isso precisamos informar um dos tipos. Mas como saber qual usar? Tudo irá depender da regra de negócio que você está usando.
Quando usar?
Em muitos casos, nós precisamos validar alguns campos ou parâmetros e a minha regra só pode continuar a execução se aquelas informações estiverem válidas. No caso vamos simular uma situação de enviar um formulário.
Supondo que tenho um formulário com 2 campos obrigatórios, Nome e E-mail e ambos precisamos estar preenchidos e validados.
func enviarDados(nome: String, email: String) {
guard !nome.isEmpty, !email.isEmpty else {
showAlert(title: "Ops", message: "Você deve preencher o nome e email corretamente")
return
}
servico.enviarDados(nome: nome, email: email) { result in
// ...
}
}
Dessa forma, eu estou garantindo que somente se tiver informações irei continuar com a execução do código, caso contrário será apresentado um alerta para o usuário e interrompe a execução.
Então respondendo a pergunta, nós devemos usar o guard quando precisamos que as informações estejam corretas e preenchidas para continuar o bloco.
Guard let ... Guard var
Dentro da declaração do guard, nós temos também o guard let ou guard var que é muito utilizado quando estamos trabalhando com opcionais.
Da mesma forma que você declara uma variável usando o let ou var, você pode usar no guard para atribuir um valor caso possua. Como assim?
Caso você possua um valor que vem por parâmetro que seja opcional, você pode realizar a validação dele e atribuir em uma nova variável e realizar o procedimento normal do seu código. Dê uma olhada no código abaixo:
func contaPalavra(valor: String?) -> Int {
guard let novoValor = valor else {
return 0
}
return novoValor.split(separator: " ").count
}
Veja que recebemos um parâmetro chamado valor do tipo opcional de String, e como precisamos validar essa informação para trabalhar com dados existentes, então verificamos com o guard let para checar se existe o valor. Leia da seguinte forma.
Se temos valor atribuído no parâmetro valor então esse valor é passado para a constante novoValor e depois separamos a String em um Array de String.
Agora se você precisa manipular o seu parâmetro ou qualquer valor que é opcional, você pode usar o guard var para isso. Dessa forma, sua variável é mutável e pode sofrer alteração.
Gostou do conteúdo? -- Deixe o like
Sentiu falta de algo? -- Deixe aqui nos comentários
Compartilhe esse post e ajude a chegar aos devs que precisam conhecer o funcionamento do guard.
Comments