¿Qué significa ". ()" En Kotlin?

He visto ejemplos donde una function tiene un argumento dado por ClassName. () Esto no parece ser una function de extensión, que es ClassName.Function ()

Un ejemplo es Kotterknife :

private val View.viewFinder: View.(Int) -> View? get() = { findViewById(it) } 

Que no conozco bien la function de,

y MaterialDrawerKt

 fun Activity.drawer(setup: DrawerBuilderKt.() -> Unit = {}): Drawer { val builder = DrawerBuilderKt(this) builder.setup() return builder.build() } 

Donde el código te permite llamar directamente

 drawer { ... } 

en lugar de darle arguments rodeados por los paréntesis.

¿Hay alguna documentation sobre esto en cualquier lugar?

Una function que no absorbe nada y no devuelve nada en Kotlin se ve así:

 var function : () -> Unit 

Mientras que la diferencia es que la function en su código no devuelve nada, no toma nada sino que se invoca en un object.

Por ejemplo,

 class Builder (val multiplier: Int) { fun invokeStuff(action: (Builder.() -> Unit)) { this.action() } fun multiply(value: Int) : Int { return value * multiplier } } 

Lo importante aquí es la forma en que hemos declarado el tipo de 'acción'

 action: (Builder.() -> Unit) 

Esta es una function que no devuelve nada, no toma nada sino que se invoca en un object de tipo "Generador".

Consulte más aquí .

  • ¿Cómo hacer que MockWebServer funcione?
  • java.lang.NoClassDefFoundError en Kotlin
  • ¿Cómo diseñar una class para json cuando uso Gson en Kotlin?
  • Cómo depurar secuencias / collections de Kotlin
  • ¿Cuál es la diferencia si elimino la palabra key 'var' en una class?
  • Kotlin crea un resultado de consulta para analizar repositorys de Github
  • Accediendo a las vistas de la actividad con Anko
  • Val no puede ser reasignado error de compilation de time para variable local en diversión en kotlin
  • Cómo implementar promedio ponderado exponencialmente decreciente
  • ¿Por qué usar Scopes y las annotations de Singleton en Dagger2 con kotlin provoca un error al comstackr?
  • Gson con la class anidada Kotlin