0Pricing
Swift Academy · Lección

La propiedad lazy

Aplace el trabajo de transformación hasta que sea necesario.

La propiedad lazy es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 1 de 4. 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 4 lecciones en total.

Eager por defecto

Los métodos de colección estándar son eager: map, filter, etc. se ejecutan de inmediato y crean un array nuevo completo, incluso si solo lee el primer elemento.

El trabajo eager ocurre ahora

Esto crea por adelantado todo el array transformado:

let nums = [1, 2, 3, 4, 5]
let doubled = nums.map { $0 * 2 }  // whole array built now
print(doubled.first!)  // 2

La propiedad lazy

Toda colección expone una vista .lazy. Las operaciones sobre una vista lazy son deferred: no se ejecutan hasta que realmente itera o solicita un elemento concreto.

Crear una vista lazy

Solo tiene que anteponer .lazy a la cadena:

let nums = [1, 2, 3, 4, 5]
let view = nums.lazy.map { $0 * 2 }
// nothing computed yet
print(Array(view))  // [2, 4, 6, 8, 10]

Prueba de la ejecución diferida

Los efectos secundarios muestran que el closure solo se ejecuta cuando se solicita:

let nums = [1, 2, 3]
let lazyMapped = nums.lazy.map { n -> Int in
    print("transforming \(n)")
    return n * 2
}
print("created view")
print(lazyMapped.first!)  // prints "transforming 1" then 2

lazy devuelve un tipo diferente

Una cadena lazy es un wrapper ligero, no un Array:

let nums = [1, 2, 3]
let view = nums.lazy.map { $0 + 1 }
print(type(of: view).self != [Int].self)  // true -- it is a LazyMapSequence

Materializar una vista lazy

Conviértala de nuevo en un array concreto con Array(...) cuando necesite almacenarla o devolverla:

let nums = [1, 2, 3]
let result: [Int] = Array(nums.lazy.map { $0 * 10 })
print(result)  // [10, 20, 30]

lazy y first(where:)

La evaluación lazy resulta útil cuando se detiene pronto. Solo se procesan los elementos necesarios para encontrar una coincidencia:

let nums = [1, 2, 3, 4, 5, 6]
let firstBig = nums.lazy.map { $0 * $0 }.first { $0 > 10 }
print(firstBig!)  // 16  (stops at 4*4)

lazy sobre un rango

Los rangos también funcionan con lazy, lo que resulta útil para secuencias grandes o casi infinitas:

let firstThree = (1...1000).lazy.map { $0 * $0 }.prefix(3)
print(Array(firstThree))  // [1, 4, 9]

Cuándo se vuelve a evaluar la vista

Una vista lazy vuelve a calcularse cada vez que se itera: no almacena resultados. Si itera dos veces, la transformación se ejecuta dos veces:

var calls = 0
let view = [1, 2].lazy.map { (n: Int) -> Int in calls += 1; return n }
_ = Array(view)
_ = Array(view)
print(calls)  // 4

Cuándo recurrir a lazy

Añada .lazy cuando tenga una cadena larga, pero solo consuma parte del resultado: la primera coincidencia, un prefijo o un único reduce. Para arrays pequeños que se consumen por completo, eager es más sencillo.

let nums = Array(1...100)
let result = nums.lazy.filter { $0 % 7 == 0 }.first
print(result!)  // 7

Comprobación rápida

¿Qué cambia la propiedad .lazy en map y filter?

Repaso

Ha aprendido los conceptos básicos de lazy:

  • Los métodos de colección estándar son eager: crean arrays de inmediato
  • .lazy devuelve una vista diferida (un tipo de secuencia especial)
  • El trabajo solo se realiza cuando itera o solicita un elemento
  • Materialice con Array(...); las vistas se vuelven a ejecutar en cada iteración

A continuación: cadenas lazy de map y filter.

Preguntas frecuentes

¿La lección «La propiedad lazy» es gratis?

Sí — el texto completo de «La propiedad lazy» 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 4 lecciones en total.

¿Qué aprenderé en «La propiedad lazy»?

Aplace el trabajo de transformación hasta que sea necesario. 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 4.

¿Cuánto tiempo toma la lección «La propiedad lazy»?

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. La propiedad lazy
  2. map y filter perezosos
  3. Compromisos entre evaluación perezosa y entusiasta
  4. Crear secuencias perezosas personalizadas
← Volver a Swift Academy