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.

  • Extensión sintética Kotlin para ver
  • OnClick y TextView en Android Studio 3
  • Cómo crear callbacks de funciones anidadas como anko - syntax DSL Kotlin
  • Prueba unitaria de la function de extensión de Kotlin en las classs de Android SDK
  • Clase Kotlin no encontrada
  • La biblioteca de Android no puede comstackr kotlin
  • Android Studio 3 no puede build fragments de kotlin
  • Hacer clic en una vista de text para cambiar el fragment
  • Kotlin || ¿No puedo agregar la biblioteca a Mi aplicación?
  • Obligatorio <Objeto> y encontrado <Objeto>?