0Pricing
Swift Academy · Aula

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"])) // true

Extensã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)     // false

Restriçõ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.0

APIs 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)        // 6

Notas 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

  1. Conformidades condicionais
  2. Restrições recursivas e genéricos de ordem superior
  3. Cláusulas where em extensões
← Voltar para Swift Academy