Ответ
Пометка всех функций inline может привести к увеличению размера бинарного файла, так как компилятор будет вставлять тело функции в каждое место её вызова, а не генерировать отдельный вызов.
Плюсы:
- Уменьшение накладных расходов на вызов функции (актуально для лямбд и функций высшего порядка).
- Возможность использования
non-local returnsв лямбдах.
Минусы:
- Увеличение размера кода (особенно если функция вызывается многократно).
- Нет смысла для больших функций (компилятор может проигнорировать
inline).
Пример:
inline fun calculate(a: Int, b: Int, op: (Int, Int) -> Int): Int = op(a, b)
// После компиляции тело лямбды встроится в вызов
val result = calculate(2, 3) { x, y -> x + y }
Используйте inline осознанно, в основном для лямбд и небольших утилитных функций.