Ответ
В Kotlin/Java скобки ()() после функции недопустимы напрямую, но есть 2 исключения:
- Функция возвращает лямбду:
fun createPrinter(): () -> Unit = { println("Hello") }
createPrinter()() // Вызовет лямбду
- Function literals with receiver (DSL-стиль):
fun buildString(action: StringBuilder.() -> Unit): String {
val sb = StringBuilder()
sb.action()
return sb.toString()
}
buildString { append("Hi") } // Фактически вызывает sb.append()
В Android такое встречается в:
- Compose (
Modifier.padding()()- нет, но есть похожие цепочки) - Kotlin DSL (Gradle, Anko)
- Колбэки, возвращающие функции
Важно: просто fun foo()() без возврата функции/лямбды - синтаксическая ошибка.