Kotlin: cómo henetworkingar la propiedad en la class de datos

Tengo una class Token abstracta declarada así:

abstract class Token(var index: Int = 0) { open fun merge(toMerge: Token): Token? { return null } } 

Deseo henetworkingar la propiedad del índice en la class de datos, así:

 data class CloseLoop(index: Int, var openLoopIndex: Int = 0) : Token(index) 

Pero me da error Data class primary constructor must have only property (val / var) parameters

¿Qué tengo que hacer para arreglar esto?

Hay al less dos soluciones:

  • Haga que la propiedad se open y anule en la statement del constructor principal de la class de datos:

     abstract class Token(open var index: Int = 0) data class CloseLoop( override var index: Int, var openLoopIndex: Int = 0 ) : Token(index) 
  • Declare una propiedad con otro nombre e inicialice la class base con ella:

     data class CloseLoop(val theIndex: Int, var openLoopIndex: Int = 0) : Token(theIndex) 

    Hazlo private si lo encuentras apropiado.

  • Kotlin security nula?
  • La function de extensión no crea un nuevo object Observable
  • Leer valores de tipo de datos primitivos en Kotlin
  • ¿Cómo almacenar variables temporales al inicializar un object Kotlin?
  • ¿Cómo agrupar elementos del Arraylist of time en HashMap en Kotlin?
  • ¿Es posible usar Allatori en el código fuente de Kotlin?
  • Usando Kotlin en una biblioteca de Android distribuida como AAR
  • ¿Necesito saber por qué? y si cambio esta línea a "println (nombre + dos)" ¿se ha resuelto el error?
  • Una alternativa a la class de Matemáticas para Flotadores
  • Getters y Setters en Kotlin
  • por qué las asignaciones no son declaraciones