Inline-функции Kotlin

Demystifying the inline keyword — статья, посвященная ключевому слову inline, которое подсказывает компилятору, что вместо вызова функции он должен встраивать ее тело в то место, где происходит вызов.

Рекомендуем: Полезные советы по Kotlin

Inline-функции появились в Kotlin по причине избыточности местной реализации лямбд. Каждый раз, когда вызывается функция, которая принимает лямбду в качестве аргумента, виртуальной машине приходится создавать анонимный объект для хранения этой функции. А так как это затратная в плане ресурсов операция, разработчики Koltin придумали решение: если объявить функцию с ключевым словом inline, то компилятор «развернет» эту функцию и ее лямбду в последовательный код.

Правило простое: если ваш код множество раз вызывает функцию, принимающую лямбду в качестве аргумента, лучше сделать ее inline-функцией. Также запомните следующие вещи:

  • Kotlin 1.1 позволяет применять ключевое слово inline также к полям, в которых используются геттеры и сеттеры;
  • ключевое слово return, вызванное из лямбды, переданной inline-функции, будет возвращать не из лямбды или inline-функции, а из функции, вызвавшей inline-функцию;
  • кроме ключевого слова inline, также существуют noinline и crossinline. Первое можно использовать в отношении отдельно взятых лямбд, когда inline-функция принимает несколько лямбд. Второе пригодится в случае, когда лямбда должна быть выполнена в другом контексте исполнения. Пример:
Понравилась статья? Поделиться с друзьями:
Добавить комментарий