Ответ
Inline-функции в Kotlin стоит использовать для небольших функций, которые часто вызываются, чтобы избежать накладных расходов на вызов. Они подставляются в месте вызова, что может улучшить производительность.
Основные случаи использования:
- Функции-расширения коллекций (map, filter)
- Лямбда-параметры высокоуровневых функций
- Когда нужно избежать создания анонимного класса для лямбды
Пример:
inline fun <T> Collection<T>.filterInline(
predicate: (T) -> Boolean
): List<T> {
val result = mutableListOf<T>()
for (item in this) {
if (predicate(item)) result.add(item)
}
return result
}
Ограничения:
- Нельзя использовать для больших функций (максимум 2-3 строки)
- Нельзя использовать с reified и обычными generic-параметрами одновременно
- Нельзя вызывать из Java-кода