Blog EspecializaTi
Carlos Ferreira Por: Carlos Ferreira Comentar

When Expression no Kotlin

When Expression no Kotlin

Outro recurso da linguagem Kotlin que é muito útil é o when, esse recurso pode economizar muitas linhas de códigos, basta saber desfrutar dos benefícios do mesmo.

Muitos programadores estão habituados com o switch, o when é muito semelhante, porém com recursos de comparação mais complexos.

O When Expression pode trabalhar de duas formas, uma delas é com argumento (recebendo parâmetro), muito semelhante ao switch, e a outra forma é sem argumento.

 
 

When com argumento (parâmetro):

Veja o primeiro exemplo com argumento:

var count = 2

when (count) {
    1 -> println("Equals 1")
    2 -> println("Equals 2")
    3 -> println("Equals 3")
    4,5 -> println("Equals 4 or 5")
    else -> {
        println("Not defined")
    }
}

Nesse exemplo estamos verificando o valor da variável count, caso seja igual a alguma das opções definidas retorna o texto de acordo, nesse exemplo retorna “Equals 2” porque o valor da variável count é igual “2“.

Caso não seja igual a 1,2 ou 3 ou igual 4 ou 5 vai cair no else. No exemplo deste else ele poderia ser implementado assim:

else -> println("Not defined")

Mas, defini com else -> {} (chaves) para exemplificar que pode fazer mais de uma operação nas condições, ou seja, se precisar fazer algo mais complexo em qualquer condição basta adicionar as chaves e fazer, exemplo:

var count = 2

when (count) {
    1 -> println("Equals 1")
    2 -> {
    	println("***********************")
    	println("Equals 2")
    	println("***********************")
    }
    3 -> println("Equals 3")
    else -> {
        println("Not defined")
    }
}

 

Outra alternativa interessante do when é comparar um range de valores, veja o exemplo prático:

var age = 50

when (age) {
    in 1..11 -> println("Children")
    in 12..17 -> println("Teenager")
    in 18..60 -> println("Adult")
    in 61..100 -> println("Old man")
    else -> println("Not defined")
}

Nesse exemplo vai comparar se os valores estão entre o range de valores definidos startend

No exemplo acima o resultado será “Adult“, porque o valor da variável age está entre 18 e 60

 

O Kotlin é uma linguagem inteligente, também é possível comparar letras do alfabeto, exemplo:

var letter = "g"

when (letter) {
    in "a".."c" -> println("in between A and C")
    in "d".."f" -> println("in between D and F")
    in "g".."k" -> println("in between G and K")
    else -> println("Not defined")
}

Nesse caso vai comparar se o valor da variável letter está entre os ranges definidos. No exemplo acima vai imprimir “in between G and K“, porque a letra G está entre G e K do alfabeto.

 
 

When sem argumento (parâmetro):

Outro formato de trabalhar com o operador when é usá-lo sem argumentos, veja o exemplo:

fun whenWithoutArgs(x: Int, y: Int) {
    when {
        x < y -> println("$x < $y")
        x > y -> println("$x > $y")
        else -> println("$x equal $y")
    }
}

whenWithoutArgs(1,2)

No exemplo acima criamos uma função que recebe dois parâmetros inteiros, e no exemplo usamos o operador when para comparar qual dos números são maiores, e apenas informar.

A chamar a função whenWithoutArgs(1,2) passando os valores 1 e 2, imprime: “1 < 2“, porque o valor de X (parâmetro 1) é maior que o valor de Y (parâmetro 2).

 

Bom é isso, espero que tenha gostado, e qualquer dúvida só deixar aquele comentário! 🙂

 

Abraços []’s

 

Carlos Ferreira

Sobre o Autor:

Carlos Ferreira

Carlos Ferreira é Analista de Sistemas Experiente, Empreendedor, Fundador da empresa EspecializaTi. Certificações: Comptia Linux +, LPI, Novell Certification.

Todos os direitos reservados © 2018 - EspecializaTi. É proibida a reprodução total ou parcial deste conteúdo.