Я прочитал этот вопрос, но у меня есть более фундаментальный вопрос относительно ключевого слова crossinline
. Я не совсем уверен, какая проблема решает и как это решает.
Из Документы Kotlin,
Обратите внимание, что некоторые встроенные функции могут вызывать lambdas, переданные им как параметры не непосредственно из тела функции, а из другого контекста выполнения, такого как локальный объект или вложенная функция. В таких случаях нелокальный поток управления также не допускается в лямбда. Чтобы указать, что, параметр лямбда должен быть отмечен модификатором кросс-линии:
[Акцент добавлен]
Это утверждение неоднозначно для меня. Во-первых, у меня возникают проблемы с изображением того, что подразумевается под "такими случаями". У меня есть общее представление о том, что проблема, но не может придумать хороший пример.
Во-вторых, фраза "Чтобы указать это", можно читать несколькими способами. Чтобы указать, что? Что конкретный случай не допускается? Что это разрешено? Этот нелокальный поток управления в определенном определении функции (или не разрешен)?
Вкратце, мне трудно понять, какой контекст для использования этого действительно есть, что его использует для общения с клиентами и каковы ожидаемые результаты применения этого ключевого слова.