No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Lazy Stored Properties

6/27
Recursos

Aportes 8

Preguntas 2

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Resumen

Como ejemplo, DataImported es una clase muy pesada que se encarga de realizar muchas cosas:


class DataImported {
    var fileName = "data.txt"
}

La clase DataManager se encarga de manejar los distintos tipos de importación de archivos:


class DataManager {
    lazy var importer = DataImported()
    var data = [String]()
}

Al usar lazy delante de la variable importer, esta no va a ser creada automáticamente cuando se crea el manager hasta que realmente sea necesario.


let manager = DataManager()
manager.data.append("Algo de datos")
manager.data.append("Muchos mas datos")

Hasta esta linea, el importer no ha sido creado…


manager // nil


manager.importer.fileName

En este momento se da la instrucción de inicializar la variable importer de la clase DataManager(). A partir de aca la variable importer ya ha sido creada.


manager // {fileName "data.txt"}

Por si alguien se pregunta por qué no todas las propiedades deberían ser lazy https://stackoverflow.com/questions/34841915/swift-why-arent-all-variables-lazy-by-default

No podía encontrar algo mejor explicado de lazy var, excelente video

Muy interesante lo de lazy properties, qué otros lenguajes tienen este feature? 🤔

Se me hace o estoy alusinando,
Entre Kotlin y Swift la sintaxis es casi semejante, lo que cambia son las palabras reservadas de cada idioma

En Kotlin sería:

lateinit var adapter: MyAdapter
adapter = MyAdapter()

Para que se hagan alguna idea.

Cuando solicito un atributo o un método de la variable lazy, en memoria se crea una instancia de la clase con todos sus atributos y métodos o solo el atributo o método que estoy solicitando?