Kotlin quando expressão (com exemplos)

Neste artigo, você aprenderá quando construir em Kotlin com a ajuda de vários exemplos.

Kotlin ao construir

A whenconstrução em Kotlin pode ser considerada uma substituição para a instrução switch Java. Ele avalia uma seção do código entre muitas alternativas.

Exemplo: Simples quando Expressão

 fun main(args: Array) ( val a = 12 val b = 5 println("Enter operator either +, -, * or /") val operator = readLine() val result = when (operator) ( "+" -> a + b "-" -> a - b "*" -> a * b "/" -> a / b else -> "$operator operator is invalid operator." ) println("result = $result") ) 

Quando você executa o programa, a saída será algo como:

 Insira o operador +, -, * ou / * resultado = 60

O programa acima recebe uma string de entrada do usuário (Leitura recomendada: obtenha a entrada da string do usuário em Kotlin). Suponha que o usuário entrou *. Nesse caso, a expressão a * bé avaliada e o valor atribuído à variável result.

Se nenhuma das condições do ramo estão satisfeitos (usuário entrou qualquer coisa, exceto +, -, * ou /), elseramo é avaliado.

No exemplo acima, usamos whencomo uma expressão. No entanto, não é obrigatório usar whencomo uma expressão. Por exemplo,

 fun main(args: Array) ( val a = 12 val b = 5 println("Enter operator either +, -, * or /") val operator = readLine() when (operator) ( "+" -> println("$a + $b = $(a + b)") "-" -> println("$a - $b = $(a - b)") "*" -> println("$a * $b = $(a * b)") "/" -> println("$a / $b = $(a / b)") else -> println("$operator is invalid") ) )

Quando você executa o programa, a saída será algo como:

 Insira o operador +, -, * ou / - 12 - 5 = 7 

Aqui, whennão é uma expressão (o valor de retorno de whennão é atribuído a nada). Nesse caso, a elseramificação não é obrigatória.

Poucas possibilidades

Combine duas ou mais condições de ramificação com uma vírgula. Por exemplo,

 fun main(args: Array) ( val n = -1 when (n) ( 1, 2, 3 -> println("n is a positive integer less than 4.") 0 -> println("n is zero") -1, -2 -> println("n is a negative integer greater than 3.") ) )

Quando você executa o programa, a saída será:

 n é um número inteiro negativo maior que 3.

Verifique o valor no intervalo. Por exemplo,

 fun main(args: Array) ( val a = 100 when (a) ( in 1… 10 -> println("A positive number less than 11.") in 10… 100 -> println("A positive number between 10 and 100 (inclusive)") ) )

Quando você executa o programa, a saída será:

 Um número positivo entre 10 e 100 (inclusive)

Verifique se um valor é de um tipo específico.

Para verificar se um valor é de um tipo específico em tempo de execução, podemos usar o operador is e! Is. Por exemplo,

 quando (x) (é Int -> imprimir (x + 1) é String -> imprimir (x.length + 1) é IntArray -> imprimir (x.sum ())) 

Use expressões como condição de ramificação. Por exemplo,

 fun main(args: Array) ( val a = 11 val n = "11" when (n) ( "cat" -> println("Cat? Really?") 12.toString() -> println("Close but not close enough.") a.toString() -> println("Bingo! It's eleven.") ) )

Quando você executa o programa, a saída será:

Bingo! São onze.

Artigos interessantes...