何时在 Kotlin 中使用 inline 函数以及它们如何影响性能?
大家好!我最近开始学习 Kotlin,遇到了 inline 函数这个东西。文档说它们有助于避免创建 lambda 对象的开销,但我不太明白什么时候真正需要应用它们。
例如,我有一个简单的高阶函数:
```kotlin
fun measureTime(action: () -> Unit) {
val start = System.currentTimeMillis()
action()
val end = System.currentTimeMillis()
println("Time: ${end - start} ms")
}
```
我这样调用它:
```kotlin
measureTime {
Thread.sleep(100)
println("Hello")
}
```
一切正常,但我读到没有 `inline` 时每次都会为 lambda 创建一个新对象。这真的是问题吗?什么时候会变得关键?
我还看到一些带有 `reified`(具体化类型)的例子——据说它们只能与 inline 一起使用。这是真的吗?这又与性能有什么关系?
你能用通俗的方式解释一下:在哪些情况下应该写 `inline`,而什么时候不应该?