参考原文: http://kotlinlang.org/docs/reference/inline-functions.html
使用高阶函数造成一些运行时问题:每一个函数都是一个对象,它会持有一个闭包;即在函数体中可以访问这些变量。内存分配(包括函数对象和类)及虚拟调用都会作为运行开销。
通过内联Lambda表达式方式,可以减少这种开销。如“lock()”函数,可以容易使用在使用位置内联相关函数,考虑下面使用方式:
fun <T> lock(lock: Lock, body: () -> T): T {
lock.lock()
try {
return body()
}
finally {
lock.unlock()
}
}
//
lock(l) { foo() }
这种使用方式,会创建一个函数对象作为参数并使用它,编译器会生成下面的代码:
l.lock()
try {
foo()
}
finally {
l.unlock()
}
内联函数,需要在函数前面使用“
inline<