flatMap e Encadeamento
Achate coleções aninhadas e encadeie transformações.
flatMap e Encadeamento é 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.
As duas faces de flatMap
flatMap em uma sequência nivela um nível de aninhamento. Ele aplica um fechamento que retorna uma sequência para cada elemento e, em seguida, concatena all essas sequências em um único vetor plano.
Nivelando vetores aninhados
Transforme um vetor de vetores em um único vetor:
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 }
print(flat) // [1, 2, 3, 4, 5]flatMap que produz sequências
Cada elemento pode se expandir em vários:
let nums = [1, 2, 3]
let expanded = nums.flatMap { [$0, $0 * 10] }
print(expanded) // [1, 10, 2, 20, 3, 30]Combinando todas as possibilidades
flatMap é útil para produtos cartesianos:
let suits = ["Hearts", "Spades"]
let ranks = ["A", "K"]
let deck = suits.flatMap { suit in ranks.map { "\($0) of \(suit)" } }
print(deck) // ["A of Hearts", "K of Hearts", "A of Spades", "K of Spades"]flatMap e compactMap
Historicamente, flatMap também desembrulhava opcionais, mas essa função passou para compactMap. Atualmente:
flatMap— nivela sequências aninhadascompactMap— descartanilde resultados opcionais
Nivelando palavras em caracteres
Expanda cada string em seus caracteres:
let words = ["hi", "yo"]
let chars = words.flatMap { Array($0) }
print(chars) // ["h", "i", "y", "o"]Unindo subresultados
Reúna itens de objetos de modelo aninhados:
struct Team { let members: [String] }
let teams = [Team(members: ["Ann", "Bo"]), Team(members: ["Cy"])]
let all = teams.flatMap { $0.members }
print(all) // ["Ann", "Bo", "Cy"]Encadeando transformações
O verdadeiro poder vem do encadeamento: map, filter, flatMap e reduce são lidos de cima para baixo como um fluxo de dados. Cada etapa produz uma nova sequência para a próxima.
Um fluxo de dados completo
Filtre, nivele, transforme e depois some:
let groups = [[1, 2, 3], [4, 5], [6]]
let result = groups
.flatMap { $0 }
.filter { $0 % 2 == 0 }
.map { $0 * $0 }
.reduce(0, +)
print(result) // 4 + 16 + 36 = 56flatMap e depois compactMap
Nivele primeiro e depois mantenha apenas os valores que podem ser analisados:
let rows = [["1", "x"], ["3", "4"]]
let nums = rows
.flatMap { $0 }
.compactMap { Int($0) }
print(nums) // [1, 3, 4]Mantendo os encadeamentos legíveis
Coloque cada etapa em sua própria linha e dê nome aos resultados intermediários quando um encadeamento ficar long. A legibilidade é mais importante do que comprimir tudo em uma única expressão.
let names = ["ann", "BO", "cy"]
let titled = names
.map { $0.lowercased() }
.map { $0.capitalized }
.sorted()
print(titled) // ["Ann", "Bo", "Cy"]Verificação rápida
O que [[1, 2], [3]].flatMap { $0 } retorna?
Recapitulação
Você aprendeu a nivelar e encadear:
flatMapnivela um nível de sequências aninhadas- Use
compactMap(não flatMap) para descartar opcionais - Encadeie
filter/map/flatMap/reduceem fluxos de dados legíveis - Uma etapa por linha mantém os encadeamentos longos claros
Curso concluído! A seguir: sequências com avaliação tardia.
Perguntas Frequentes
A aula “flatMap e Encadeamento” é grátis?
Sim — o texto completo de “flatMap e Encadeamento” é 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 “flatMap e Encadeamento”?
Achate coleções aninhadas e encadeie transformações. 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 “flatMap e Encadeamento”?
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
- map e compactMap
- filter e Predicados
- reduce e reduce(into:)
- flatMap e Encadeamento