Extensiones en Kotlin

Quiero usar extensiones para variables y método para mi class personalizada. Estoy intentando debajo del código, pero obtengo un error

Las properties de extensión local no están permitidas

val Double.km: Double get() = this * 1000 val Double.m: Double get() = this val Double.cm: Double get() = this / 100 val Double.mm: Double get() = this / 1000 val Double.ft: Double get() = this / 3.28084 val oneInch = 25.4.mm println("One inch is $oneInch meters") // prints "One inch is 0.0254 meters" val threeFeet = 3.0.ft println("Three feet is $threeFeet meters") // prints "Three feet is 0.914399970739201 meters" 

¿Cómo usar extensiones? ¿Podemos usar extensiones en la interfaz?

Tienes que mover estas declaraciones desde el cuerpo de la function al cuerpo de la class. Al igual que los estados de error, no está permitido definir properties de extensión localmente, mientras que los methods de extensión local son correctos.

Entonces en tu caso podrías hacer:

 class MainClass { val Double.km: Double get() = this * 1000 val Double.m: Double get() = this val Double.cm: Double get() = this / 100 val Double.mm: Double get() = this / 1000 val Double.ft: Double get() = this / 3.28084 fun run() { val oneInch = 25.4.mm println("One inch is $oneInch meters") } } 

Puede usar las properties de extensión desde su MainClass , mientras que el uso externo no es posible.

  • La function Kotlin requiere nada, pero se define como un tipo diferente
  • Anulación accidental: las siguientes declaraciones tienen la misma firma de JVM
  • Extienda la comprobación de Mockito para que Kotlin no funcione (de manera "kotlin")
  • En Kotlin Lenguaje de progtwigción importancia de varargs en términos de usos
  • Kotlin || ¿No puedo agregar la biblioteca a Mi aplicación?
  • Extensión sintética Kotlin para ver
  • El tipo Out-Projected 'ArrayList <*>' prohíbe el uso de 'public fun fun add (índice: Int, elemento: E): Unidad definida en java.util.ArrayList'
  • Hacer clic en una vista de text para cambiar el fragment
  • ¿Cómo funcionan las funciones de extensión de Kotlin?
  • ¿Cuál es el equivalente de este código de java a kotlin