noinline

假如你仅仅是想要一些lambda表达式被inline函数内联,你可以将函数的一些参数标记为noinline:

inline fun foo(inlined: () -> Unit, noinline notInlined: () -> Unit) {
    // ...
}

可以被内联的lambda表达式仅仅可以被inline函数调用,或者被传递到inline的函数参数中,但是noinline的参数可以按照我们喜欢的方式进行操作,存入到变量、进行参数传递等。

需要注意的是如果inline函数没有inline的参数,并且没有Reified type parameters。编译器将会产生一个警告,因为内联这样的函数将很有可能是有益处的(如果你可以确认内联是有必要的,你可以取消这个警告)。

results matching ""

    No results matching ""