Ответ
noinline — это модификатор в Kotlin, который указывает, что параметр функции типа inline не должен быть встроенным (inlined) при компиляции.
Зачем это нужно?
- Оптимизация: Если лямбда передаётся в другую не-inline функцию или сохраняется в переменную.
- Совместимость: Когда лямбда требует полноценного объекта (например, для рефлексии).
Пример:
inline fun processData(
data: String,
noinline onSuccess: (String) -> Unit, // Не будет встроена
onError: (Exception) -> Unit // Будет встроена
) {
try {
onSuccess(data.uppercase())
} catch (e: Exception) {
onError(e)
}
}
Здесь onSuccess останется обычной лямбдой, а onError будет оптимизирована.