Swift Academy · Lección

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.

Lección 2 de 38 pasos

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]) // 12

Lectura 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.

Gratis para empezar

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

  1. Sobrecarga de operadores y grupos de precedencia
  2. Subscripts e índices personalizados, revisados
  3. Derivaciones de Hashable/Equatable/Comparable
← Volver a Swift Academy