相关疑难解决方法(0)

何时在Kotlin中使用内联函数?

我知道内联函数可能会提高性能并导致生成的代码增长,但我不确定何时正确使用它.

lock(l) { foo() }
Run Code Online (Sandbox Code Playgroud)

编译器可以发出以下代码,而不是为参数创建函数对象并生成调用.(来源)

l.lock()
try {
  foo()
}
finally {
  l.unlock()
}
Run Code Online (Sandbox Code Playgroud)

但我发现kotlin没有为非内联函数创建的函数对象.为什么?

/**non-inline function**/
fun lock(lock: Lock, block: () -> Unit) {
    lock.lock();
    try {
        block();
    } finally {
        lock.unlock();
    }
}
Run Code Online (Sandbox Code Playgroud)

function inline-functions kotlin

87
推荐指数
5
解决办法
2万
查看次数

Kotlin Bytecode - 如何在IntelliJ IDEA中进行分析?

我想看看编译后的字节码,这样我就可以了解它在封面下的工作原理.我正在使用IntelliJ IDEA 15,但找不到查看字节码的方法.我错过了什么?

intellij-idea kotlin android-studio jvm-bytecode

59
推荐指数
2
解决办法
7169
查看次数