0Pricing
Swift Academy · Aula

Inferência em Closures

Entenda a inferência de parâmetros e retornos em closures.

Inferência em Closures é uma aula grátis de Swift 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 Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.

Fechamentos inferem tipos

Em muitos contextos, um fechamento pode inferir os tipos de seus parâmetros e do retorno a partir da forma como é usado.

let numbers = [1, 2, 3, 4]
let doubled = numbers.map { $0 * 2 }
print(doubled)

Tipo do parâmetro inferido

Quando passa um fechamento para map, o tipo do elemento informa a Swift o que é $0, portanto você pode omitir o tipo do parâmetro.

let names = ["ada", "bob"]
let upper = names.map { $0.uppercased() }
print(upper)

Tipo de retorno inferido

O corpo do fechamento determina seu tipo de retorno. Retornar um Bool transforma o fechamento em um predicado.

let nums = [1, 2, 3, 4, 5]
let evens = nums.filter { $0 % 2 == 0 }
print(evens)

Nomes abreviados dos argumentos

$0, $1 e assim por diante referem-se aos argumentos do fechamento pela posição quando seus tipos são inferidos.

let sums = zip([1, 2, 3], [10, 20, 30]).map { $0 + $1 }
print(Array(sums))

Parâmetros explícitos quando necessário

Ainda é possível nomear os parâmetros e anotar os tipos se isso melhorar a clareza.

let nums = [3, 1, 2]
let sorted = nums.sorted { (a: Int, b: Int) -> Bool in
    return a < b
}
print(sorted)

Inferência a partir do contexto

Se atribuir um fechamento a uma variável com tipo definido, o tipo da variável informa ao fechamento qual é a sua assinatura.

let add: (Int, Int) -> Int = { a, b in a + b }
print(add(2, 3))

Fechamento final

A sintaxe de fechamento final mantém a inferência funcionando e, ao mesmo tempo, torna os locais de chamada mais legíveis.

let result = [5, 3, 8, 1].sorted { $0 > $1 }
print(result)

Inferido em reduce

Em reduce, os tipos do acumulador e do elemento são inferidos a partir do valor inicial e da sequência.

let total = [1, 2, 3, 4].reduce(0) { acc, x in acc + x }
print(total)

Retornando de um fechamento

Fechamentos de expressão única podem omitir a palavra-chave return; o valor da expressão é retornado e seu tipo é inferido.

let lengths = ["hi", "hello", "hey"].map { $0.count }
print(lengths)

Variável de fechamento com tipo anotado

Quando armazena um fechamento sem uma chamada imediata, anote o tipo do fechamento para que Swift possa inferir o corpo.

let transform: (String) -> Int = { $0.count }
print(transform("swift"))

Quando é necessário anotar

Se o contexto ao redor não fornecer informações de tipo, Swift não poderá inferir os parâmetros do fechamento e será necessário anotá-los.

let isPositive: (Int) -> Bool = { n in n > 0 }
print(isPositive(5), isPositive(-3))

Verificação rápida

Teste a inferência de fechamentos.

Recapitulação

Os fechamentos inferem os tipos dos parâmetros e do retorno a partir de contextos como map, filter ou uma variável com tipo definido. Use as formas abreviadas $0/$1 quando os tipos forem inferidos e faça anotações explícitas quando não houver contexto disponível.

let f: (Int) -> Int = { $0 + 1 }
let xs = [1, 2, 3].map { $0 * 10 }
print(f(9), xs)

Perguntas Frequentes

A aula “Inferência em Closures” é grátis?

Sim — o texto completo de “Inferência em Closures” é 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 Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.

O que vou aprender em “Inferência em Closures”?

Entenda a inferência de parâmetros e retornos em closures. Você pratica Swift 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 Swift Academy?

Nenhuma experiência prévia é necessária. Swift 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 “Inferência em Closures”?

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

Sim. Cada aula de Swift 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. Como Funciona a Inferência de Tipos
  2. Quando Adicionar Anotações Explícitas
  3. Inferência com Literais
  4. Inferência em Closures
← Voltar para Swift Academy