0Pricing
Kotlin Academy · Aula

when como Expressão

Retorne valores de when

when como Expressão é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kotlin Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Academy inclui 4 aulas no total.

when como expressão

O when do Kotlin é mais do que uma instrução switch. Ele é uma expressão, ou seja, produz um valor que você pode atribuir ou retornar.

Isso torna a lógica de ramificação concisa e fácil de ler.

Retornando um valor

Quando usado como expressão, cada ramo fornece um resultado. O valor do ramo correspondente se torna o resultado de todo o when.

fun main() {
    val day = 3
    val name = when (day) {
        1 -> "Monday"
        2 -> "Tuesday"
        3 -> "Wednesday"
        else -> "Other"
    }
    println(name)
}

else é obrigatório

Quando usado como expressão, when deve ser exaustivo. Para valores arbitrários, isso significa incluir um ramo else.

Sem ele, o compilador não pode garantir que um valor será produzido.

fun grade(score: Int): String = when {
    score >= 90 -> "A"
    score >= 80 -> "B"
    else -> "C"
}

fun main() {
    println(grade(85))
}

Vários valores por ramo

Separe vários valores com vírgulas para compartilhá-los em um único ramo.

Isso é mais limpo do que repetir o mesmo corpo.

fun main() {
    val day = 6
    val type = when (day) {
        1, 2, 3, 4, 5 -> "Weekday"
        6, 7 -> "Weekend"
        else -> "Invalid"
    }
    println(type)
}

when sem argumento

Omita o valor analisado, e cada ramo se tornará uma condição booleana.

Isso substitui uma cadeia de if/else if por um bloco organizado.

fun main() {
    val temp = 18
    val feel = when {
        temp < 0 -> "Freezing"
        temp < 15 -> "Cold"
        temp < 25 -> "Mild"
        else -> "Hot"
    }
    println(feel)
}

Intervalos nos ramos

Os ramos podem testar intervalos com in.

Isso representa faixas numéricas de maneira muito natural.

fun main() {
    val score = 73
    val band = when (score) {
        in 0..59 -> "Fail"
        in 60..79 -> "Pass"
        in 80..100 -> "Excellent"
        else -> "Invalid"
    }
    println(band)
}

Verificações de tipo nos ramos

Os ramos podem verificar tipos com is.

O resultado de cada ramo pode ser diferente, e when retorna o tipo comum.

fun describe(x: Any): String = when (x) {
    is Int -> "Integer"
    is String -> "Text"
    else -> "Unknown"
}

fun main() {
    println(describe(42))
    println(describe("hi"))
}

Blocos de ramo

Um ramo pode ser um bloco com várias instruções. A última expressão do bloco é o seu valor.

fun main() {
    val n = 5
    val result = when {
        n > 0 -> {
            val doubled = n * 2
            "Positive, doubled is " + doubled
        }
        else -> "Non-positive"
    }
    println(result)
}

Retornando when diretamente

Uma função pode retornar uma expressão when diretamente, usando um corpo de expressão única.

Esse é um estilo muito comum e limpo em Kotlin.

fun sign(n: Int): String = when {
    n > 0 -> "positive"
    n < 0 -> "negative"
    else -> "zero"
}

fun main() {
    println(sign(-4))
}

Capturando o valor analisado

Você pode declarar o valor analisado dentro de when para que ele fique disponível nos ramos.

Isso mantém um valor temporário em um escopo bem restrito.

fun describeLength(text: String): String = when (val len = text.length) {
    0 -> "empty"
    in 1..5 -> "short (" + len + ")"
    else -> "long (" + len + ")"
}

fun main() {
    println(describeLength("hello"))
}

Juntando tudo

Como expressão, when é um poderoso produtor de valores:

  • Cada ramo fornece um resultado
  • else torna a expressão exaustiva
  • Oferece suporte a vírgulas, intervalos, tipos e blocos
fun ticketPrice(age: Int): Int = when {
    age < 6 -> 0
    age < 18 -> 10
    age >= 65 -> 8
    else -> 15
}

fun main() {
    println(ticketPrice(4))
    println(ticketPrice(70))
}

Verificação rápida

Teste sua compreensão de when como expressão.

Recapitulação

Você aprendeu a usar when como expressão:

  • Ele retorna o valor do ramo correspondente
  • Precisa de else para ser exaustivo
  • Oferece suporte a vírgulas, intervalos, verificações de tipo e blocos

A seguir, você verá como as conversões inteligentes permitem que o compilador restrinja os tipos para você.

Perguntas Frequentes

A aula “when como Expressão” é grátis?

Sim — o texto completo de “when como Expressão” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kotlin Academy, atualize para CoddyKit PRO. O curso de Kotlin Academy inclui 4 aulas no total.

O que vou aprender em “when como Expressão”?

Retorne valores de when Você pratica Kotlin Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Kotlin Academy?

Nenhuma experiência prévia é necessária. Kotlin Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “when como Expressão”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Kotlin Academy?

Sim. Cada aula de Kotlin Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. when como Expressão
  2. Conversões Inteligentes
  3. Operadores is e as
  4. when Exaustivo
← Voltar para Kotlin Academy