La inicialización de variables lateinit de miembros se puede verificar con:
class MyClass { lateinit var foo: Any ... fun doSomething() { if (::foo.isInitialized) { // Use foo } } }Sin embargo, esta sintaxis no funciona para las variables lateinit locales. Lint informa el error: "Todavía no se admiten las referencias a variables". Lógicamente, debería haber una manera de hacerlo, ya que las variables lateinit son nulas internamente cuando no se inicializan.
¿Hay alguna forma de verificar si las variables locales están inicializadas?
El código que muestra en su pregunta está realmente bien en Kotlin 1.2 y más allá, ya que foo es una variable de instancia, no una variable local. El mensaje de error que informa y menciona en el comentario de Alexey ( Unsupported [References to variables aren't supported yet] ) puede ser activado por una variable local verdadera, por ejemplo, en el método doSomethingElse a continuación.
class MyClass { lateinit var foo: Any fun doSomething() { if (::foo.isInitialized) { // this is fine to use in Kotlin 1.2+ // Use foo } } fun doSomethingElse() { lateinit var bar: Any if (::bar.isInitialized) { // this is currently unsupported (see link in Alexey's comment. // Use bar } } }Así que parece que esto actualmente no es compatible. ¿El único lugar que me viene a la mente donde se usaría un lateinit local sería si el local es una variable capturada en una lambda?