草庐IT

crossinline

全部标签

kotlin - Kotlin 中的 crossinline 和 noinline 有什么区别?

此代码编译时出现警告(对性能影响不大):inlinefuntest(noinlinef:()->Unit){thread(block=f)}这段代码无法编译(内联参数非法使用):inlinefuntest(crossinlinef:()->Unit){thread(block=f)}此代码编译时出现警告(对性能影响不大):inlinefuntest(noinlinef:()->Unit){thread{f()}}此代码编译时没有警告或错误:inlinefuntest(crossinlinef:()->Unit){thread{f()}}这是我的问题:为什么(2)不编译,而(4)编译?n

kotlin - Kotlin 中的 crossinline 和 noinline 有什么区别?

此代码编译时出现警告(对性能影响不大):inlinefuntest(noinlinef:()->Unit){thread(block=f)}这段代码无法编译(内联参数非法使用):inlinefuntest(crossinlinef:()->Unit){thread(block=f)}此代码编译时出现警告(对性能影响不大):inlinefuntest(noinlinef:()->Unit){thread{f()}}此代码编译时没有警告或错误:inlinefuntest(crossinlinef:()->Unit){thread{f()}}这是我的问题:为什么(2)不编译,而(4)编译?n

Kotlin 的 crossinline 关键字

我已阅读thisquestion但我对crossinline关键字有一个更基本的问题。我不太确定它正在解决什么问题以及它是如何解决的。来自theKotlinDocs,Notethatsomeinlinefunctionsmaycallthelambdaspassedtothemasparametersnotdirectlyfromthefunctionbody,butfromanotherexecutioncontext,suchasalocalobjectoranestedfunction.Insuchcases,non-localcontrolflowisalsonotallowe