Avatar ·

Inicialización de propiedades en Kotlin: ¿by lazy o lateinit? ¿Cuál elegir?

¡Hola a todos! Acabo de empezar a aprender Kotlin y me encontré con un problema. Estoy escribiendo una pequeña aplicación y necesito inicializar algunas propiedades de la clase, pero sus valores no se conocen de inmediato, por ejemplo, después de cargar datos o en `onCreate` para Android. Conozco dos enfoques: `lateinit` y `by lazy`. Pero no puedo entender cuándo usar cuál. Aquí hay un ejemplo de mi código: ```kotlin class MyActivity : AppCompatActivity() { private lateinit var userName: String private val userAge: Int by lazy { fetchUserAge() // este método puede ser llamado más tarde } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) userName = "John" // inicialización lateinit } private fun fetchUserAge(): Int { return 25 } } ``` El problema es que si uso `lateinit` para `userName`, el IDE se queja si intento hacerlo `val`. Y `by lazy` solo funciona con `val`. También he oído que `latei