¿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í .

  • El plugin de JaCoCo Gradle informa la proporción cubierta de class 0.0 para cada package
  • Versión de Android Studio 3 Kotlin
  • Cómo convertir ByteArray a String con juego de caracteres especificado en Kotlin
  • asignar variable solo si es nulo
  • Kotlin security nula?
  • Android se cuelga después de intentar crear una versión de lanzamiento
  • Funciones elementales en kotlin
  • ¿Por qué Kotlin no puede inferir el siguiente argumento lambda (después de la conversión de Java -> Kotlin)?
  • ReferenceError: ok no está definido en QUnitAsserter.assertTrue en Kotlin Javascript
  • ¿Cómo crear una propiedad sin acceso en Kotlin?
  • RxJava 2 requiere un tipo de retorno Observable diferente de RxJava 1 (Kotlin)