associatedtype y protocolos genéricos
Defina protocolos con associatedtype , observe cómo los vinculan los tipos conformes y use funciones genéricas con restricciones de protocolo.
associatedtype y protocolos genéricos es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 1 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 3 lecciones en total.
¿Por qué usar tipos asociados?
Los protocolos pueden ser genéricos mediante associatedtype. Los tipos que se ajustan al protocolo vinculan el marcador de posición a un tipo concreto.
Protocolo con associatedtype
associatedtype Item actúa como un parámetro de tipo. Los requisitos pueden usarlo en métodos, subíndices y propiedades.
protocol Container {
associatedtype Item
mutating func append(_ item: Item)
var count: Int { get }
subscript(index: Int) -> Item { get }
}Conformidad concreta
Un tipo que se ajusta al protocolo elige un Item concreto, en este caso Int, al implementar los requisitos con ese 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 genérico conforme
Un tipo genérico puede ajustarse al protocolo vinculando Item == Element, lo que mantiene el protocolo genérico y reutilizable.
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 el protocolo en genéricos
Restrinja las funciones con C: Container. Puede usar C.Item de forma abstracta sin fijarlo.
// 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 IntStackNotas y consejos
Notas:
- Los protocolos con tipos asociados no se usan directamente como tipos; prefiera los genéricos o la eliminación de tipos.
- Asigne nombres claros a los marcadores de posición, como Item o Element.
- La conformidad puede ser explícita (
typealias Item = ...) o inferirse a partir de las firmas.
Significado de associatedtype
Comprobación rápida: ¿Qué significa associatedtype?
Resumen
Resumen: Use associatedtype para hacer genéricos los protocolos. Los tipos conformes eligen el tipo concreto y las funciones genéricas pueden trabajar con cualquier tipo conforme mediante restricciones.
Preguntas frecuentes
¿La lección «associatedtype y protocolos genéricos» es gratis?
Sí — el texto completo de «associatedtype y protocolos genéricos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 3 lecciones en total.
¿Qué aprenderé en «associatedtype y protocolos genéricos»?
Defina protocolos con associatedtype , observe cómo los vinculan los tipos conformes y use funciones genéricas con restricciones de protocolo. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Swift Academy?
No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 3.
¿Cuánto tiempo toma la lección «associatedtype y protocolos genéricos»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Swift Academy?
Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- associatedtype y protocolos genéricos
- Patrones de type erasure (AnySequence/AnyIterator)
- Cuándo usar existentials (any P) frente a genéricos