UNRESOLVED_REFERENCE Referencia no resuelta: isInitialized

Intento utilizar la nueva function de Kotlin para verificar el estado de la propiedad lateinit, pero obtuve este error de time de compilation Unresolved reference: isInitialized

He configurado mi file build.gradle con la versión de kotlin_version = '1.2.0-beta-31' de kotlin_version = '1.2.0-beta-31' (la versión de android studio es 3.0) y también he actualizado el complemento de kotlin con la misma versión. este es mi fragment de código, donde estoy usando isInitialized check.

también tenía una biblioteca reflejada incluida

 compile group: 'org.jetbrains.kotlin', name: 'kotlin-reflect', version: '1.2.0-beta-31' 

.

 lateinit var k: SomeObjectType fun instance(): SomeObjectType { if (::k.isInitialized) { k = SomeObjectType() } return k } 

Este es un error como se informa aquí y se lanza en v1.2-rc-1

Actualización: Kotlin 1.2 RC parece estar disponible como '1.2.0-rc-39', por lo que si actualiza su complemento y utiliza esta versión, su problema debería resolverse.

Como solución alternativa hasta que instale rc-1, el prefijo de la variable con this:: funciona como se puede mostrar en este proyecto.

 package com.example.john.so2 import android.support.v7.app.AppCompatActivity import android.os.Bundle data class SomeObjectType(val value: String) lateinit var k: SomeObjectType class MainActivity : AppCompatActivity() { lateinit var k: SomeObjectType fun instance(): SomeObjectType { if (this::k.isInitialized) { return k } else { return SomeObjectType("k was not initialized") } } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) println("instance = ${instance()}") k = SomeObjectType("k was initialized") println("instance = ${instance()}") } } 

cuyos performances:

 11-03 19:31:14.496 31982-31982/com.example.john.so2 I/System.out: instance = SomeObjectType(value=k was not initialized) 11-03 19:31:14.496 31982-31982/com.example.john.so2 I/System.out: instance = SomeObjectType(value=k was initialized) 

Por cierto, dejé mi respuesta original ya que resalta el hecho de que la syntax correcta funciona en "try-online"

¿Es tu código un código de Kotlin válido? Intenté lo siguiente y pareció funcionar como se esperaba.

 data class SomeObjectType(val value: String) lateinit var k: SomeObjectType fun instance(): SomeObjectType { if (::k.isInitialized) { return k } else { return SomeObjectType("k was not initialized") } } fun main(args: Array<String>) { println("inst = ${instance()}") k = SomeObjectType("was initialized") println("inst = ${instance()}") } 

produciendo:

 inst = SomeObjectType(value=k was not initialized) inst = SomeObjectType(value=was initialized) 

Cuando intenté con lo que tienes arriba: (con la class SomeObjectType() agregada class SomeObjectType()

 class SomeObjectType() lateinit var k: SomeObjectType fun instance(): SomeObjectType { if (::k.isInitialized) { instance = SomeObjectType() } return instance } 

se queja de la línea instance = SomeObjectType() y la línea de return instance , que creo que tiene sentido para mí. La línea 5 es la instance = SomeObjectType() y la línea 7 es la línea de return instance .

 Error:(5, 8) Function invocation 'instance()' expected Error:(5, 8) Variable expected Error:(7, 11) Function invocation 'instance()' expected 

Aquí están los enlaces a los ejemplos en línea. ejemplo de trabajo , ejemplo roto

  • Android Kotlin pasa el valor de los campos de text a numberPicker
  • ¿Por qué tengo un Log de salida no deseado al fusionar 2 observables en otro Observable, que los almacena temporalmente cada 10 segundos?
  • No se puede convertir la advertencia de "tipo de plataforma de statement" de Kotlin en un error
  • Pruebas de Espresso con Kotlin
  • ¿Cómo puedo ejecutar una sola testing de Android usando Kotlin?
  • ¿Cómo establecer el atributo de peso de forma dinámica desde el código de Kotlin?
  • Sirve favicon.ico y otros files estáticos con VertX
  • ¿Cómo puedo usar más fácilmente las transactions de Jooq en Kotlin?
  • Kotlin: Dagger2 @Inject context var siempre es nulo
  • Kotlin with-statement como expresión
  • ¿Cómo puedo usar la callback en Kotlin?