Ответ
inline используется для лямбд, чтобы избежать накладных расходов на создание анонимных классов при каждом вызове. Это особенно полезно для высокоуровневых функций (например, map, filter), где лямбды вызываются часто.
Пример:
inline fun performOperation(action: () -> Unit) {
action()
}
// При компиляции код "встраивается", избегая создания объекта Function
performOperation { println("Inline lambda") }
Когда НЕ использовать:
- Для больших лямбд (увеличивает размер бинарника).
- Если лямбда передаётся в другую функцию без
inline(например, в Java-метод). - Для рекурсивных лямбд (невозможно встроить).
Оптимально для коротких лямбд в performance-critical коде.