Cláusulas where em extensões
Use where em extensões de tipo e de protocolo para adicionar APIs somente quando as restrições forem atendidas (por exemplo, Array where Element: Equatable , Collection where Element == Int ).
Cláusulas where em extensões é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 3 de 3. 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 3 aulas no total.
Por que usar extensões com restrições?
Adicione APIs somente quando os tipos atenderem às restrições, usando uma cláusula de restrição nas extensões:
- Extensões de tipo (por exemplo,
Array) - Extensões de protocolo (por exemplo,
Collection) - Restrições de correspondência exata (por exemplo,
Element == Int)
Extensão de tipo com restrição
Associe methods a vetores somente quando seu Element tiver igualdade. Vetores sem igualdade não terão acesso a essas APIs.
extension Array where Element: Equatable {
func removing(_ value: Element) -> [Element] {
filter { $0 != value }
}
func containsAll(_ others: [Element]) -> Bool {
others.allSatisfy(self.contains)
}
}
print([1,2,3].removing(2)) // [1,3]
print(["a","b"].containsAll(["b"])) // trueExtensão de protocolo com restrição
Uma extensão de protocolo adiciona uma API a todos os tipos conformes quando a restrição é atendida (neste caso, qualquer Collection de elementos ordenáveis).
extension Collection where Element: Comparable {
var isSorted: Bool {
// Pair each element with the next; ensure non-decreasing order
zip(self, dropFirst()).allSatisfy(<=)
}
}
print([1,2,3].isSorted) // true
print([3,1,2].isSorted) // falseRestrições de correspondência exata
Use restrições de igualdade para APIs direcionadas, por exemplo, somente quando Element == Int. Elas não aparecerão para outros tipos de elemento.
extension Collection where Element == Int {
var sum: Int { reduce(0, +) }
func average() -> Double {
isEmpty ? 0 : Double(sum) / Double(count)
}
}
print([1,2,3].sum) // 6
print([1,2,3].average()) // 2.0APIs baseadas em capacidades
Restrinja por capacidade (protocolos como Numeric e Hashable) para compor auxiliares poderosos e reutilizáveis.
extension Collection where Element: Numeric {
var total: Element { reduce(0, +) }
}
extension Sequence where Element: Hashable {
var uniques: [Element] {
var seen = Set<Element>()
return filter { seen.insert($0).inserted }
}
}
print([1,2,2,3].uniques) // [1,2,3]
print([1,2,3].total) // 6Notas de projeto
Dicas:
- Prefira restrições mínimas para possibilitar uma reutilização mais ampla.
- Evite extensões sobrepostas que definam o mesmo membro; isso pode confundir a resolução de sobrecargas.
- Documente as suposições (ordenação, unicidade, domínios numéricos).
Finalidade das extensões com restrições
Verificação rápida: O que as extensões com restrições permitem fazer?
Recapitulação
Recapitulação: Use where em extensões de tipos/protocolos para direcionar APIs com precisão — por capacidade (: Comparable) ou tipo exato (== Int) — mantendo o código seguro e fácil de descobrir.
Perguntas Frequentes
A aula “Cláusulas where em extensões” é grátis?
Sim — o texto completo de “Cláusulas where em extensões” é 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 3 aulas no total.
O que vou aprender em “Cláusulas where em extensões”?
Use where em extensões de tipo e de protocolo para adicionar APIs somente quando as restrições forem atendidas (por exemplo, Array where Element: Equatable , Collection where Element == Int ). 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 3 de 3.
Quanto tempo leva a aula “Cláusulas where em extensões”?
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
- Conformidades condicionais
- Restrições recursivas e genéricos de ordem superior
- Cláusulas where em extensões