Где еще встречал вызовы функции вида SpecialFunction()()

«Где еще встречал вызовы функции вида SpecialFunction()()» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Kotlin/Android такие вызовы встречаются при использовании higher-order functions или lambda-выражений с receiver.

Примеры:

  1. Lambda с receiver (DSL-стиль):
val result = StringBuilder().apply { 
    append("Hello") 
    append("World") 
}.toString()

apply — функция, возвращающая this (StringBuilder), и блок кода выполняется в его контексте.

  1. Функции высшего порядка:
fun customRun(block: () -> Unit) = block()
customRun { println("Called!") } 

Вызов customRun() принимает лямбду, которая выполняется при вызове block().

  1. Генераторы (например, Jetpack Compose):
@Composable
fun MyButton(onClick: () -> Unit) {
    Button(onClick = onClick) { Text("Click") } // Лямбда в фигурных скобках
}

Здесь Button() принимает лямбду для контента ({}).