Когда нужно использовать inline

«Когда нужно использовать inline» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Inline-функции в Kotlin стоит использовать для небольших функций, которые часто вызываются, чтобы избежать накладных расходов на вызов. Они подставляются в месте вызова, что может улучшить производительность.

Основные случаи использования:

  1. Функции-расширения коллекций (map, filter)
  2. Лямбда-параметры высокоуровневых функций
  3. Когда нужно избежать создания анонимного класса для лямбды

Пример:

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-кода