Что такое анонимная функция

Ответ

Анонимная функция (лямбда) — функция без имени, объявляемая на месте использования. В Kotlin она записывается через лямбда-выражение или анонимный объект. Часто используется как аргумент для higher-order функций.

Пример в Kotlin:

val sum = { a: Int, b: Int -> a + b }
println(sum(2, 3)) // 5

button.setOnClickListener { 
    // обработка клика
}

Особенности:

  • Может захватывать переменные из контекста
  • Не требует явного объявления return (последнее выражение — результат)
  • Часто используется с коллекциями и обработчиками событий

Ответ 18+ 🔞

Ну, слушай, смотри. Анонимная функция — это как тот самый случайный чувак на вечеринке, который появляется из ниоткуда, делает своё дело и растворяется в ночи. Без имени, без паспорта, просто функциональность в чистом виде. В Kotlin её либо лямбдой запишешь, либо через анонимный объект, если совсем припёрло. В основном её, конечно, пихают как аргумент в функции высшего порядка, чтобы не заморачиваться с объявлениями.

Вот смотри, как это выглядит, ёпта:

val sum = { a: Int, b: Int -> a + b }
println(sum(2, 3)) // 5

button.setOnClickListener { 
    // обработка клика
}

Видишь? Первый случай — просто присвоили лямбду переменной. Второй — классика: навесили обработчик на кнопку, и всё это прямо на месте, без лишнего геморроя.

А теперь фишки, которые делают её такой удобной, блядь:

  • Она может захватывать переменные из контекста. То есть если в области видимости есть какая-то externalValue, она её спокойно внутри использует, как будто так и надо. Удобно, чёрт возьми.
  • Не требует явного return. Результатом автоматически становится последнее выражение в её теле. Сделал дело — гуляй смело, возвращать ничего не надо.
  • И, конечно, её обожают использовать с коллекциями (типа map, filter) и всякими обработчиками событий. Потому что писать для каждой мелочи отдельную именованную функцию — это, прости, пиздопроебищно. Вот так вот, коротко и ясно.