内联函数
定义
内联和正常函数的区别不在于定义函数的异同点。定义的时候只需要加一个标识,就可以让正常函数变为内联函数。实际两者的区别是在实际执行时的处理机制上。内联是耗用性能低,比正常函数少了压栈和出栈的操作,是一种以空间换时间的方式。当函数体少,以及被频繁调用的函数才适合被定义为内联函数
关键字:inline
inline fun lock<T>(lock: Lock,body: ()-> T): T {
//...
}
noinline
该关键字定义非内联函数,为啥还要专门这样定义。这是为了给内联函数传递函数参数时,为了标识这个函数非内联而添加的。
inline fun foo(inlined: () -> Uint, @noinline notInlined: () -> Unit) {
//...
}