Subscripts e índices personalizados, revisados
Defina subscripts con get / set , acepte varios parámetros (por ejemplo, una matriz 2D) y use custom index types (enums) para crear APIs legibles.
Subscripts e índices personalizados, revisados es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 2 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.
¿Qué son los subíndices?
Los subíndices permiten indexar las instancias como si fueran arrays. Puede:
- Ofrecer acceso de solo lectura o de lectura y escritura
- Aceptar varios parámetros (por ejemplo, fila/columna)
- Usar índices personalizados, como enums, para mejorar la claridad
Subíndice de solo lectura
Un subíndice puede ser de solo lectura si devuelve un valor sin set.
struct TimesTable {
let multiplier: Int
subscript(index: Int) -> Int { multiplier * index } // read-only
}
let t = TimesTable(multiplier: 3)
print(t[4]) // 12Lectura y escritura con get/set
Añada get/set para permitir el acceso de lectura y escritura. Valide los índices para evitar fallos.
struct SafeArray<T> {
private var storage: [T]
init(_ xs: [T]) { self.storage = xs }
subscript(i: Int) -> T? {
get { (0..<storage.count).contains(i) ? storage[i] : nil }
set {
guard let v = newValue, (0..<storage.count).contains(i) else { return }
storage[i] = v
}
}
}
var s = SafeArray([10,20,30])
print(s[1] ?? -1) // 20
s[1] = 99
print(s[1] ?? -1) // 99
s[5] = 7 // ignored (out of range)Indexación bidimensional
Los subíndices pueden aceptar varios parámetros y usar etiquetas para mejorar la claridad (por ejemplo, row/col).
struct Matrix {
let rows: Int, cols: Int
private var grid: [Int]
init(_ r: Int, _ c: Int, fill: Int = 0) {
rows = r; cols = c; grid = Array(repeating: fill, count: r * c)
}
private func valid(_ r: Int, _ c: Int) -> Bool { r >= 0 && r < rows && c >= 0 && c < cols }
subscript(row r: Int, col c: Int) -> Int {
get { precondition(valid(r,c), "Index out of range"); return grid[r*cols + c] }
set { precondition(valid(r,c), "Index out of range"); grid[r*cols + c] = newValue }
}
}
var m = Matrix(2, 3)
m[row: 0, col: 1] = 5
print(m[row: 0, col: 1]) // 5Índice personalizado (enum)
Use índices personalizados para que la intención sea evidente: un enum puede asignarse al almacenamiento y mantener una API expresiva.
enum Day: Int, CaseIterable { case mon = 0, tue, wed, thu, fri, sat, sun }
struct Week {
private var tasks = Array(repeating: "—", count: Day.allCases.count)
subscript(day: Day) -> String {
get { tasks[day.rawValue] }
set { tasks[day.rawValue] = newValue }
}
}
var w = Week()
w[.wed] = "Ship"
print(w[.wed])Consejos de diseño
Consejos:
- Prefiera los subíndices para el acceso a elementos; use métodos para las acciones.
- Valide los índices (assert/precondition u opcionales seguros).
- Asigne nombres a los parámetros cuando acceda a varios ejes.
- Mantenga los subíndices rápidos y predecibles.
Declaración de lectura y escritura
Comprobación rápida: ¿Cuál de estas declaraciones define un subíndice de lectura y escritura?
Repaso
Repaso: Cree subíndices de solo lectura y de lectura y escritura, acepte varios parámetros (como en las matrices) y prefiera índices personalizados (enums) para mejorar la legibilidad y la seguridad.
Aprende Swift con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 122
- Lecciones
- 409
Preguntas frecuentes
¿La lección «Subscripts e índices personalizados, revisados» es gratis?
Sí — el texto completo de «Subscripts e índices personalizados, revisados» 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 «Subscripts e índices personalizados, revisados»?
Defina subscripts con get / set , acepte varios parámetros (por ejemplo, una matriz 2D) y use custom index types (enums) para crear APIs legibles. 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 2 de 3.
¿Cuánto tiempo toma la lección «Subscripts e índices personalizados, revisados»?
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
- Sobrecarga de operadores y grupos de precedencia
- Subscripts e índices personalizados, revisados
- Derivaciones de Hashable/Equatable/Comparable