0Pricing
Android Academy · Aula

Lambdas e funções de ordem superior

Passe comportamento como valores.

Lambdas e funções de ordem superior é uma aula grátis de Android Academy no CoddyKit. Esta é a aula 4 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 Android Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Android Academy inclui 4 aulas no total.

O que é uma lambda?

Uma lambda é uma função pequena que você pode escrever diretamente no código, sem dar um nome a ela.

Você a envolve em chaves: { x -> x + 1 }. As lambdas permitem passar comportamentos da mesma forma que dados.

Você já as usou com map e filter.

Armazenando uma lambda em uma variável

Uma lambda é um valor, então você pode armazená-la em uma variável e chamá-la mais tarde.

Chame-a como uma função, usando parênteses.

fun main() {
    val square = { x: Int -> x * x }
    println(square(5))
    println(square(3))
}

O atalho it

Quando uma lambda recebe exatamente um parâmetro, você pode deixar de dar um nome a ele e usar it.

Isso mantém as lambdas curtas compactas e legíveis.

fun main() {
    val nums = listOf(1, 2, 3, 4)
    val big = nums.filter { it > 2 }
    println(big)
}

Vários parâmetros

Uma lambda pode receber mais de um parâmetro, separados por vírgulas antes da seta.

A última expressão da lambda é o valor que ela retorna.

fun main() {
    val add = { a: Int, b: Int -> a + b }
    println(add(4, 6))
}

Funções de ordem superior

Uma função de ordem superior é uma função que recebe outra função como parâmetro ou retorna uma função.

O tipo de função (Int) -> Int significa "recebe um Int e retorna um Int". É assim que map e filter funcionam.

Escrevendo uma função de ordem superior

Aqui definimos applyTwice, que aceita uma função e a executa duas vezes.

O parâmetro op tem o tipo (Int) -> Int.

fun applyTwice(x: Int, op: (Int) -> Int): Int {
    return op(op(x))
}

fun main() {
    println(applyTwice(3) { it + 1 })
}

Sintaxe de lambda no final

Quando uma lambda é o último argumento, você pode movê-la para fora dos parênteses.

É por isso que list.filter { ... } fica tão limpo. As duas formas abaixo são equivalentes.

fun main() {
    val nums = listOf(1, 2, 3)
    println(nums.map({ it * 2 }))
    println(nums.map { it * 2 })
}

Passando funções nomeadas

Você pode passar uma função nomeada existente onde uma lambda é esperada usando ::, chamado de referência de função.

Assim, você evita reescrever a lógica como uma lambda.

fun isOdd(n: Int) = n % 2 == 1

fun main() {
    val nums = listOf(1, 2, 3, 4)
    println(nums.filter(::isOdd))
}

Retornando uma função

Uma função de ordem superior também pode retornar uma função. Aqui, multiplier cria uma lambda personalizada para multiplicação.

Esta é uma forma simples de configuração.

fun multiplier(factor: Int): (Int) -> Int {
    return { it * factor }
}

fun main() {
    val triple = multiplier(3)
    println(triple(5))
}

Lambdas capturam variáveis

Uma lambda pode ler variáveis do escopo ao redor. Isso é chamado de fechamento.

Aqui, a lambda se lembra de bonus mesmo depois de ser passada para outro lugar.

fun main() {
    val bonus = 10
    val nums = listOf(1, 2, 3)
    println(nums.map { it + bonus })
}

Por que as lambdas são importantes no Android

No Android, as lambdas expressam retornos de chamada com clareza. Um ouvinte de clique de botão é apenas uma lambda que você entrega à estrutura.

Por exemplo: button.setOnClickListener { showMenu() } executa seu código quando o botão é tocado.

Verificação rápida

Teste sua compreensão sobre lambdas e funções de ordem superior.

Recapitulação

As lambdas são funções sem nome escritas diretamente entre chaves, usando it para um único parâmetro.

As funções de ordem superior recebem ou retornam funções, permitindo retornos de chamada claros e operações reutilizáveis, como map e filter.

Perguntas Frequentes

A aula “Lambdas e funções de ordem superior” é grátis?

Sim — o texto completo de “Lambdas e funções de ordem superior” é 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 Android Academy, atualize para CoddyKit PRO. O curso de Android Academy inclui 4 aulas no total.

O que vou aprender em “Lambdas e funções de ordem superior”?

Passe comportamento como valores. Você pratica Android 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 Android Academy?

Nenhuma experiência prévia é necessária. Android 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 4 de 4.

Quanto tempo leva a aula “Lambdas e funções de ordem superior”?

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 Android Academy?

Sim. Cada aula de Android 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. Listas e listas mutáveis
  2. Mapas e conjuntos
  3. map, filter, forEach
  4. Lambdas e funções de ordem superior
← Voltar para Android Academy