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.

  • Hacer clic en una vista de text para cambiar el fragment
  • Obligatorio <Objeto> y encontrado <Objeto>?
  • El tipo Out-Projected 'ArrayList <*>' prohíbe el uso de 'public fun fun add (índice: Int, elemento: E): Unidad definida en java.util.ArrayList'
  • Extensión sintética Kotlin para ver
  • OnClick y TextView en Android Studio 3
  • Anulación accidental: las siguientes declaraciones tienen la misma firma de JVM
  • Android Kotlin Extension super calling
  • ¿Cómo crear un button en Kotlin que abre una nueva actividad (Android Studio)?
  • ¿Cuál es el equivalente de este código de java a kotlin
  • Clases de Kotlin sin llaves