if
O mais popular no mundo do desenvolvimento é o if/else
. Definido com if/2
ele espera uma expressão e um bloco de execução inicado com do
.
Só será executado o contexto de if
caso a expressão seja verdadeira. Vamos a um exemplo
Precisamos de uma função que retorna se uma pessoa é maior de idade. Então expressão seria: idade >= 18
. caso seja verdadeira, retorna true
, case não, retorna false
.
Para estruturar nossa solução, iremos utiliza maps (caso não saiba o que é, de uma olhada no capitulo de maps). Teremos no map o atributo name
e o atributo age
.
Vamos ao nosso teste:
Rodando o teste, teremos o primeiro relatório de erro
Ainda não possuimos o modulo nem a função criada, mas ja temos uma ideia do que precisamos. Vamos lá. Criaremos agora o arquivo person.ex
e escreveremos a menor logica para o teste passar:
Se rodarmos o teste novamente, teremos sucesso.
Caso de verdadeiro cobrido, agora precisamos do caso falso, quando não se é maior de idade. Vamos ao teste
A utilização de interrogação no nome da função é uma convenção. Você pode entender melhor dela no capÃtulo de conveções.
Obviamente, a resposta da função is_adult?/1
sempre será true, já que fixamos um valor estatico para ela. Como podemos resoltar esse problema? Condicionais foram criados para esse tipo de tratamento.
Todas as expressões if
que não são verdadeiras, caem no contexto else
, caso definido. Podemos escrever o códio if de duas formas, normal ou encurtada:
As expressoes lidam com operadores de comparação
, algum deles são:
==
igual===
identico!=
diferente>
maior<
menor>=
maior igual<=
menor igual
Exemplos simples
Vamos alterar nosso código e fazer o teste passar.
Precisamos de nossa regra que a idade seja maior a 17 anos
ou maior e igual a 18
.
Podemos também alterar para inline.
Códigos inline
São codigos que podem ser executado em uma linha só. Server para simplificar a escreita e se tornar mais fácil entendimento. Porém, deve ser tomado cuidado em não deixar as coisas mais complexas com isso, sempre pense nisso antes de seguir essa estrategia.
If é largamente utilizado em outras linguagens. Mesmo elixir possuindo if
, não é tão utilizado devido ao pattern matching
. Porém, existem diversos cenários que são importantes.
Last updated