Sobes.tech
Junior

Explique o conceito da expressão 'when' na linguagem de programação Kotlin.

sobes.tech IA

Resposta da IA

when em Kotlin é um operador estrutural universal que substitui o clássico switch em outras linguagens. Pode ser usado como uma expressão (retornando um valor) ou como um operador.

Principais funcionalidades:

  • Comparação de valores: Correspondência com valores específicos.

    fun describe(obj: Any): String =
        when (obj) {
            1           -> "Um"
            "Hello"     -> "Saudação"
            is Long     -> "Longo"
            !is String  -> "Não é uma string"
            else        -> "Desconhecido"
        }
    
  • Verificação de tipo (is/!is): Correspondência com tipos de dados.

  • Verificação de pertença (in/!in): Verificação de inclusão em um intervalo ou coleção.

    fun checkRange(x: Int): String =
        when (x) {
            in 1..10   -> "Número positivo na faixa"
            !in 10..20 -> "Não na segunda faixa"
            else       -> "Nenhum dos anteriores"
        }
    
  • Sem argumento: Usado como uma substituição mais flexível de cadeias if-else if-else. As condições são avaliadas em sequência.

    fun checkBoolean(x: Boolean, y: Boolean): String =
        when {
            x && y -> "Ambos verdadeiros"
            !x && !y -> "Ambos falsos"
            else -> "Misto"
        }
    
  • Retorno de valor: Se when for usado como uma expressão, deve ser exaustivo (cobrir todos os casos possíveis ou ter um ramo else).

when melhora a legibilidade e segurança do código em comparação com o tradicional switch.