Decisões eficientes em Kotlin: como tirar vantagem do comando WHEN
Eu tenho repetido em praticamente todas as minhas postagens que em Java somos praticamente obrigados a escrever muito boilerplate (#piadaDeProgramador), e eu pretendo defender esse argumento novamente com outro exemplo da vida real em que a sintaxe do Java é falha quanto às estruturas de decisão.
Imagine que estamos lidando com um sistema onde é necessário aplicar uma porcentagem de desconto de acordo com a idade da pessoa e diferentes margens são aplicadas para idades entre 1–5, 6–10, 11–15, 15–18, 18–45.
É possível perceber antecipadamente que são muitas condições a serem avaliadas, então já pensamos logo em utilizar um switch:
switch(idade) {
//Ops...
}Mas espera, em Java as condições de um switch devem ser estáticas, e são limitadas a uns poucos tipos de dado, então como eu vou fazer isso? Droga, hora de recair para 5 if-else’s. Ou talvez não.
WHEN you’re about to give up
Uma das vantagens de se programar em linguagens extremamente expressivas como o Kotlin é poder se beneficiar de estruturas como o when. Você pode pensar sobre ela como um switch em Java, porém com muitas outras possibilidades. Veja como ficaria a resolução do problema acima utilizando essa estrutura:
when(idade) {
in 1..5 -> ...
in 6..10- > ...
...
}O uso do comando in em conjunto com os dois pontos entre um número e o outro em cada “case” do when faz com que qualquer número que esteja dentro daquela sequência satisfaça a condição (incluindo ambos). Legal não é? Mas isso é só o começo. Você pode verificar até mesmo se um objeto é instância de uma classe, e ao mesmo tempo tirar proveito do Smart Cast para fazer chamadas diretas aos membros da classe:
open class Usuarioclass Administrador : Usuario() {
val token = "$#%90@%"
}class Operador : Usuario() {
val senha = "123456"
}val usuario: Usuario = Administrador()when(usuario) {
is Administrador -> println(usuario.token)
is Operador -> println(usuario.senha)
}
If you can see it here and you have the courage enough to speak it. It will happen — Conor McGregor
Essa é a vantagem de se utilizar a estrutura de decisão when em Kotlin. Caso tenha gostado dessa postagem, não se esqueça de recomendá-la para que outras pessoas também possam se beneficiar com a leitura. Se quiser aprender um pouco mais sobre a linguagem Kotlin com foco em desenvolvimento de aplicativos android, é só me seguir para acompanhar as próximas postagens.
Até a próxima.
