¿Cuál es el lugar correcto para inicializar las variables de class en kotlin?

A: inicializa la variable de class en el bloque de inicio

private class ViewHolder(view: View) { val menuImg: ImageView val txtMenu: TextView init { menuImg = view.find(R.id.menuImg) txtMenu = view.find(R.id.txtMenu) } } 

B: inicializar variable de class directa en bloque de class

  private class ViewHolder(view: View) { val menuImg: ImageView = view.find(R.id.menuImg) val txtMenu: TextView = view.find(R.id.txtMenu) } 

¿Qué diferencia entre dos códigos y por qué?

No hay diferencia en la ejecución de esas opciones A y B: inicializadores de propiedad (asignando inmediatamente un valor) y bloques de inicializador (usando el bloque init). Pero para inicializaciones simples como su código, es común usar el inicializador de properties – opción B en su caso.

Pero tenga en count el order de ejecución de los inicializadores si usa ambas versiones en su código.

Citando de este artículo :

En primer lugar, se evalúan los arguments de constructor pnetworkingeterminados, comenzando con el argumento al constructor al que llama directamente, seguido de arguments a cualquier constructor delegado. A continuación, los inicializadores (inicializadores de propiedad y bloques init) se ejecutan en el order en que se definen en la class, de arriba hacia abajo . Finalmente, los constructores se ejecutan, comenzando con el constructor primario y moviéndose hacia afuera a través de constructores delegates hasta que se ejecuta el constructor que usted llamó.

  • falla en la construcción de Travis ci - causa: espacio PermGen
  • No se puede comstackr una function de extensión con parámetro de tipo reificado en Kotlin
  • Obtener acceso a una instancia en una function de contenedor
  • Habitación, Kotlin solo tiene problemas con JellyBean
  • La database de la sala anula objects insertados
  • ¿Qué significa "con" en Kotlin?
  • ¿De dónde vienen los tres contenedores de testing?
  • Múltiples icons de canal de files XML relacionados en Android Studio con Kotlin
  • RxJava: onBackpressureBlock () comportamiento extraño
  • Migración de Groovy gradle a Kotlin gradle (falta extensión o conversión de cierre, no estoy seguro)
  • ¿Convierte un tipo que admite nulos a su tipo que no admite nulos?