Ответ
Анонимная функция (лямбда) — функция без имени, объявляемая на месте использования. В 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) и всякими обработчиками событий. Потому что писать для каждой мелочи отдельную именованную функцию — это, прости, пиздопроебищно. Вот так вот, коротко и ясно.