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.

  • 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 crear un button en Kotlin que abre una nueva actividad (Android Studio)?
  • La biblioteca de Android no puede comstackr kotlin
  • Extienda la comprobación de Mockito para que Kotlin no funcione (de manera "kotlin")
  • Cómo crear callbacks de funciones anidadas como anko - syntax DSL Kotlin
  • La function Kotlin requiere nada, pero se define como un tipo diferente
  • ¿Cómo funcionan las funciones de extensión de Kotlin?
  • No se puede acceder a EditText u otros componentes de la interfaz de usuario con Kotlin
  • OnClick y TextView en Android Studio 3