Зачем использовать inline без lambdas

Я пытаюсь понять, как правильно использовать inline модификатор. Я понимаю общий случай, когда мы встраиваем лямбду, чтобы предотвратить избыточное распределение, как описано в документах .

Я проверял kotlin stdlib и нашел в _Strings.kt следующий фрагмент кода:

 @kotlin.internal.InlineOnly public inline fun CharSequence.elementAtOrNull(index: Int): Char? { return this.getOrNull(index) } 

В чем причина использования inline здесь?

Эта конкретная функция и несколько других в kotlin-stdlib отмечены как @InlineOnly так что они не присутствуют в фактических файлах stdlib и доступны только для компилятора Kotlin для их встроенных. Цель, которая достигается таким образом, – уменьшить количество методов в артефактах, что важно для Android.

Кроме того, использование inline функций без lambdas полезно для переопределения параметров типа .

Все еще накладные расходы, как бы незначительны они ни были, можно избежать.

Аналогичное обсуждение свойств внутренних линий.

Сообщение о расширениях Kotlin, которые попадают в эффекты байт-кода

Я бы сказал, что это связано с эффективностью. Вместо вызова функций elementAtOrNull и, таким образом, getOrNull этот вызов вызывается напрямую.

Intereting Posts
Vaadin 8 NativeSelect изменить представление данных списка Как обрабатывать доступность в пользовательском представлении, когда он не предназначен для обработки кликов? Большой размер файла при преобразовании растрового изображения в PDF Как определить нового оператора в Котлине? Котлин: Путаница с лямбдами и дженериками Представление привязки Kotlin: как отличить переменную вида от локальной переменной? Как использовать стек в Котлине? Аннотации: когда требуется arrayOf Невозможно внедрить один и тот же экземпляр в Сервис и ViewModel Ошибка в печатном простом номере с использованием функций высокого порядка в котлине Spring Boot + Kotlin AutoProxyRegistrar вызывает исключение Nullpointer Kotlin Coroutines: Нужно ли синхронизировать общее состояние? Использовать группу в ConstraintLayout для прослушивания событий кликов на нескольких представлениях У меня есть два метода расширения Kotlin для одного и того же класса, но с разными генерическими сигнатурами и компилятор жалуется Как установить Kotlin в Eclipse для Android Development?