filter e Predicados
Selecione os elementos que satisfazem uma condição.
filter e Predicados é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 2 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.
O que é filter?
filter mantém apenas os elementos para os quais um fechamento (um predicado) retorna true.
- O fechamento retorna um
Bool - O tipo dos elementos permanece o mesmo
- O resultado é um novo vetor, possivelmente menor
Um filter simples
Mantenha apenas os números pares:
let numbers = [1, 2, 3, 4, 5, 6]
let evens = numbers.filter { $0 % 2 == 0 }
print(evens) // [2, 4, 6]Filtrando strings
Mantenha as palavras com mais de três caracteres:
let words = ["hi", "swift", "go", "filter"]
let long = words.filter { $0.count > 3 }
print(long) // ["swift", "filter"]O que é um predicado?
Um predicado é simplesmente uma função que recebe um valor e retorna um Bool. filter chama seu predicado uma vez por elemento e mantém o valor quando o predicado é true.
Dando nome a um predicado
Os predicados podem ser armazenados e reutilizados para melhorar a legibilidade:
let isPositive: (Int) -> Bool = { $0 > 0 }
let data = [-2, 5, -1, 8]
print(data.filter(isPositive)) // [5, 8]Combinando condições
Use operadores booleanos dentro do predicado:
let nums = [1, 2, 3, 4, 5, 6, 7, 8]
let picked = nums.filter { $0 % 2 == 0 && $0 > 4 }
print(picked) // [6, 8]Filtrando estruturas
Filtre uma coleção de objetos de modelo por uma propriedade:
struct Product { let name: String; let price: Int }
let items = [Product(name: "Pen", price: 2), Product(name: "Bag", price: 40)]
let cheap = items.filter { $0.price < 10 }
print(cheap.map { $0.name }) // ["Pen"]filter e map
Eles respondem a perguntas diferentes: filter escolhe quais elementos permanecem; map altera cada elemento. Os tipos dos resultados são diferentes:
let n = [1, 2, 3, 4]
print(n.filter { $0 > 2 }) // [3, 4] (subset, same type)
print(n.map { $0 > 2 }) // [false, false, true, true]Encadeando filter e map
Filtre primeiro para reduzir o trabalho e depois transforme:
let nums = [1, 2, 3, 4, 5, 6]
let result = nums
.filter { $0 % 2 == 0 }
.map { $0 * $0 }
print(result) // [4, 16, 36]Contando sem manter os elementos
Se você precisa apenas de uma contagem, filter(...).count funciona, mas count(where:) evita criar um vetor:
let votes = [true, false, true, true]
let yes = votes.filter { $0 }.count
print(yes) // 3Filtrando um dicionário
filter em um dicionário produz um dicionário com os pares de chave e valor correspondentes:
let ages = ["Ann": 30, "Bo": 17, "Cy": 22]
let adults = ages.filter { $0.value >= 18 }
print(adults.keys.sorted()) // ["Ann", "Cy"]Verificação rápida
O que um predicado de filter deve retornar?
Recapitulação
Você aprendeu a filtrar:
filtermantém os elementos cujo predicado étrue- Um predicado é qualquer função que converte um valor em
Bool - O tipo dos elementos é preservado; o vetor pode ficar menor
- Combine condições com
&&/||e encadeie commap
A seguir: reduce.
Perguntas Frequentes
A aula “filter e Predicados” é grátis?
Sim — o texto completo de “filter e Predicados” é 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 “filter e Predicados”?
Selecione os elementos que satisfazem uma condição. 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 2 de 4.
Quanto tempo leva a aula “filter e Predicados”?
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