Pasar una lambda al último parámetro
En Kotlin, existe una convención de que si el último parámetro de una función acepta una función, una expresión lambda que se pasa como el argumento correspondiente se puede colocar fuera de los paréntesis:
val product = items.fold(1) { acc, e -> acc * e }
¿Cuál es el propósito de esta sintaxis?
Esta sintaxis le da a Kotlin excelentes capacidades DSL, hace que las funciones parezcan construcciones de lenguaje. Por ejemplo:
with(car) { startUp() goToDestination() } Aquí parece with es una construcción de lenguaje, mientras que es una función simple, recibiendo lambda como último parámetro.
Y esto lleva a cosas tan elegantes como Kotlin HTML DSL