0Pricing
Swift Academy · Aula

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 IntStack

Observaçõ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

  1. associatedtype e protocolos genéricos
  2. Padrões de apagamento de tipos (AnySequence/AnyIterator)
  3. Quando usar existenciais (any P) versus genéricos
← Voltar para Swift Academy