我知道内联函数可能会提高性能并导致生成的代码增长,但我不确定什么时候使用内联函数是正确的。
lock(l) { foo() }
编译器可以发出以下代码,而不是为参数创建函数对象并生成调用。(来源)
l.lock()
try {
foo()
}
finally {
l.unlock()
}
但我发现 Kotlin 没有为非内联函数创建函数对象,为什么?
/**non-inline function**/
fun lock(lock: Lock, block: () -> Unit) {
lock.lock();
try {
block();
} finally {
lock.unlock();
}
}