¿Qué hay de diferente entre dos constructores?

¿Qué diferencia hay entre este tipo de constructor?

class ColorsArray(context: Context) {} 

y

 class ColorsArray(var context: Context){} 

La segunda class no solo declara un constructor que toma un Context , sino que también tiene una propiedad llamada context donde guarda el valor pasado al constructor. A continuación, puede acceder a esto de la siguiente manera:

 val colorsArray = ColorsArray(context) println(colorsArray.context) 

Como lo ha declarado como var y no como val , también puede reasignarse.

 colorsArray.context = someOtherContext 

Las properties declaradas en el constructor primario están cubiertas en los documentos aquí .

En el primer caso, el constructor toma un parámetro de context y no hace nada con él.

En el segundo caso, el ejemplo de código proporcionado:

 class ColorsArray(var context: Context) { } 

es un atajo para:

 class ColorsArray(context: Context) { var context: Context = context } 
  • Kotlin recomienda la manera de anular el logging de un oyente con un SAM
  • ¿Por qué son válidos tanto val box1 como val box2 en Kotlin?
  • No se puede usar la biblioteca de kotlin
  • Dagger 2 con Kotlin, regresando el tipo con generic en ApplicationComponent
  • No se puede "findViewById" en Kotlin. Obteniendo el error "Falló la inferencia de tipo"
  • Cómo ejecutar Kotlin Koans en IntelliJ? ¿Cuál es la "class principal"?
  • Puede tener un constructor vacío o un constructor cuyos parameters coincidan con los campos
  • ¿Puedo usar @autowire (spring-context) para una aplicación de escritorio kotlin?
  • RxJava: onBackpressureBlock () comportamiento extraño
  • Kotlin: problemas para entender los generics
  • Kotlin - Sobrecarga del operador de invocación de la function