Tipos de valor para reducir el uso compartido
Prefiera los value types para evitar el uso compartido accidental: los structs y enums se copian al asignarse, lo que favorece el aislamiento, la previsibilidad y la seguridad de los hilos.
Tipos de valor para reducir el uso compartido es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 3 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é utilizar tipos por valor?
Las estructuras y enumeraciones de Swift son tipos por valor: asignarlas y pasarlas crea copias. Esto reduce el uso compartido accidental y facilita el razonamiento sobre el estado.
Uso compartido de referencias (clase)
Las clases son tipos por referencia: varias variables pueden apuntar a la misma instancia, por lo que las mutaciones se propagan entre los alias.
final class Bag {
var items: [String]
init(_ items: [String]) { self.items = items }
}
let a = Bag(["pen"])
let b = a // REF COPY: a and b refer to the same object
b.items.append("book")
print(a.items) // ["pen","book"] — mutated via b
print(b.items)Copias independientes (estructura)
Las estructuras se copian al asignarlas. Cada variable es propietaria de sus propios datos; las mutaciones permanecen aisladas.
struct Point { var x: Int; var y: Int }
var p1 = Point(x: 1, y: 2)
var p2 = p1 // VALUE COPY: independent
p2.x = 99
print(p1.x, p2.x) // 1, 99 — p1 unaffectedColecciones con copia al escribir
Array/Dictionary/Set son tipos por valor con copia al escribir. Cuando modifica un array al que hacen referencia varias variables, Swift crea una copia nueva.
var a1 = [1,2,3]
var a2 = a1 // copy-on-write handle
a2.append(4) // triggers copy if a1 is uniquely referenced
print(a1) // [1,2,3]
print(a2) // [1,2,3,4]Actualizaciones de estilo puro
Diseñe API casi puras: acepte un valor y devuelva un valor nuevo. De este modo, quienes llaman a la API evitan mutaciones compartidas inesperadas.
struct Profile {
var name: String
var tags: [String]
}
func addTag(_ p: Profile, _ tag: String) -> Profile {
var copy = p // work on a value copy
copy.tags.append(tag) // caller gets a new updated value
return copy
}
let pA = Profile(name: "Ana", tags: [])
let pB = addTag(pA, "swift")
print(pA.tags) // []
print(pB.tags) // ["swift"]Elegir correctamente
Directrices:
- Prefiera struct para datos pequeños e inmutables o modificados localmente.
- Utilice class cuando necesite identidad, estado mutable compartido o herencia.
- Los tipos por valor reducen el uso compartido y facilitan el razonamiento sobre la concurrencia.
Uso compartido por valor frente a por referencia
Comprobación rápida: ¿Por qué los tipos por valor ayudan a evitar el uso compartido no deseado?
Resumen
Resumen: Las estructuras y enumeraciones son valores. Utilícelas para minimizar el estado mutable compartido. Las colecciones utilizan copia al escribir para que las mutaciones no sorprendan a otras variables que las contienen.
Preguntas frecuentes
¿La lección «Tipos de valor para reducir el uso compartido» es gratis?
Sí — el texto completo de «Tipos de valor para reducir el uso compartido» 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 «Tipos de valor para reducir el uso compartido»?
Prefiera los value types para evitar el uso compartido accidental: los structs y enums se copian al asignarse, lo que favorece el aislamiento, la previsibilidad y la seguridad de los hilos. 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 3 de 3.
¿Cuánto tiempo toma la lección «Tipos de valor para reducir el uso compartido»?
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
- Fundamentos de ARC: strong / weak / unowned
- Ciclos de retención y cómo romperlos con weak/unowned
- Tipos de valor para reducir el uso compartido