associatedtype e protocolos genéricos
Defina protocolos com associatedtype , veja como os tipos conformes os associam e use funções genéricas com restrições de protocolo.
associatedtype e protocolos genéricos é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 1 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 tipos associados?
Os protocolos podem ser genéricos por meio de tipos associados. Os tipos conformes vinculam o espaço reservado a um tipo concreto.
Protocolo com tipo associado
Um tipo associado funciona como um parâmetro de tipo. Os requisitos podem usá-lo em métodos, subscritos e propriedades.
protocol Container {
associatedtype Item
mutating func append(_ item: Item)
var count: Int { get }
subscript(index: Int) -> Item { get }
}Conformidade concreta
Um tipo conforme escolhe um elemento concreto, aqui um tipo inteiro, implementando os requisitos com esse tipo.
struct IntStack: Container {
// Binds Item == Int implicitly by usage
private var items: [Int] = []
mutating func append(_ item: Int) { items.append(item) }
var count: Int { items.count }
subscript(index: Int) -> Int { items[index] }
}
var st = IntStack()
st.append(10); st.append(20)
print(st.count, st[1])Tipo conforme genérico
Um tipo genérico pode estar em conformidade vinculando seu tipo associado ao tipo de elemento, mantendo o protocolo genérico e reutilizável.
struct Stack<Element>: Container {
private var items: [Element] = []
mutating func append(_ item: Element) { items.append(item) }
var count: Int { items.count }
subscript(index: Int) -> Element { items[index] }
// Here, associatedtype Item == Element
}
var s = Stack<String>()
s.append("hi"); s.append("bye")
print(s.count, s[1])Usar o protocolo em genéricos
Restrinja funções a contêineres. Você pode usar o tipo de elemento do contêiner de forma abstrata, sem fixá-lo.
// Generic algorithm operating on any Container
func dumpFirstTwo<C: Container>(_ c: C) {
// We can talk about C.Item but not assume concrete type
if c.count >= 2 {
print("0:", c[0])
print("1:", c[1])
} else {
print("too few elements")
}
}
dumpFirstTwo(s) // works with Stack<String>
dumpFirstTwo(st) // works with IntStackObservações e dicas
Observações:
- Protocolos com tipos associados não podem ser usados diretamente como tipos; prefira genéricos ou apagamento de tipos.
- Nomeie os espaços reservados com clareza, como Item ou Element.
- A conformidade pode ser explícita (
typealias Item = ...) ou inferida a partir das assinaturas.
Significado de tipo associado
Verificação rápida: o que significa associatedtype?
Recapitulação
Recapitulação: use tipos associados para tornar os protocolos genéricos. Os tipos conformes escolhem o tipo concreto, e as funções genéricas podem trabalhar com qualquer tipo conforme por meio de restrições.
Perguntas Frequentes
A aula “associatedtype e protocolos genéricos” é grátis?
Sim — o texto completo de “associatedtype e protocolos genéricos” é 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 “associatedtype e protocolos genéricos”?
Defina protocolos com associatedtype , veja como os tipos conformes os associam e use funções genéricas com restrições de protocolo. 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 1 de 3.
Quanto tempo leva a aula “associatedtype e protocolos genéricos”?
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
- associatedtype e protocolos genéricos
- Padrões de apagamento de tipos (AnySequence/AnyIterator)
- Quando usar existenciais (any P) versus genéricos