-
Этот код компилируется с предупреждением (незначительное влияние на производительность):
inline fun test(noinline f: () -> Unit) { thread(block = f) }
-
Этот код не компилирует (незаконное использование встроенного параметра):
inline fun test(crossinline f: () -> Unit) { thread(block = f) }
-
Этот код компилируется с предупреждением (незначительное влияние на производительность):
inline fun test(noinline f: () -> Unit) { thread { f() } }
-
Этот код компилируется без предупреждения или ошибки:
inline fun test(crossinline f: () -> Unit) { thread { f() } }
Вот мои вопросы:
- Почему (2) не компилируется, но (4) делает?
- В чем разница между
noinline
иcrossinline
? - Если (3) не генерирует никаких улучшений производительности, почему бы (4) сделать?