Kotlin – ¿Utilidad de las properties var "computadas"?

Me di count de que cuando tengo una propiedad var con un get personalizado, que no usa el identificador de field , de todos modos se genera un campo de respaldo. Comprobé el bytecode, y la documentation también lo dice así:

Se generará un campo de respaldo para una propiedad si utiliza la implementación pnetworkingeterminada de al less uno de los accesadores , o si un acceso personalizado lo reference a través del identificador de campo.
(el énfasis es mío)

Considera una class como esta. Como se trata de una propiedad var , se generará un set pnetworkingeterminado (y, por lo tanto, un campo de respaldo):

 class Banana { var ripeness = 1 var color: String = "green" get() = when { ripeness > 80 -> "brown" ripeness > 50 -> "yellow" else -> "green" } } val b = Banana() b.color = "blue" println(b.color) 

Sin embargo, la printing siempre imprimirá "verde", sin importar a qué ajuste el color . El campo de respaldo se establecerá en "azul" de todos modos.
Como no hay forma de acceder a él fuera de los methods de acceso (o mediante reflexión), realmente no puedo pensar en una razón para esto.
¿Me estoy perdiendo de algo? Tal vez un uso u otra forma de acceder al campo de respaldo? ¿O es solo un error (o una advertencia faltante en IntelliJ)?

Una propiedad var "calculada" con un campo de respaldo usado debe ser una propiedad val "calculada".

Si no va a utilizar el campo de respaldo en su ejemplo, Banana.color no debe ser una var sino un val . p.ej:

 class Banana { var ripeness = 1 val color: String get() = when { ripeness > 80 -> "brown" ripeness > 50 -> "yellow" else -> "green" } } 

Por otro lado, si realmente deseaba hacer que su propiedad "computada" fuera reemplazable en algunos casos, entonces necesitaría usar realmente el campo de respaldo. p.ej:

 class Banana { var ripeness = 1 var color: String = "green" get() = when { ripeness > 80 -> "brown" ripeness > 50 -> "yellow" else -> field } } 
  • Diferencia entre protegido y sin
  • Kotlin coroutines unit testing usando mockito
  • ¿Cómo puedo inyectar un object en el presentador en la aplicación mosby de Android kotlin MVP con daga?
  • Cómo implementar el repository de interfaz en otro module de proyecto en AndroidStudio usando Dagger2 y Kotlin
  • Agregar la aplicación Library to Gradle Kotlin
  • no puede generar carpetas de vista java.lang.NullPointerException
  • Kotlin - Cómo recursivamente llamar a una function lambda
  • No se puede hacer que el nodo se centre en un StackPane con TornadoFX
  • ¿Proporciona Kotlin alguna implementación de sus interfaces de colección?
  • ¿Cómo creo una function de extensión en Kotlin, que opera en una class?
  • ¿Es posible especificar una function estática en una interfaz de Kotlin?