当函数具有带有 lambda 参数的对象时,如何利用 kotlin 的内联优势



假设我有一个这样的数据类

private data class StubModel<T>(
val invocation: ItemsFactory.() -> T?,
val returnValue: T
)

我有一个这样的功能

private fun <T> stubIt(stubs: List<StubModel<T>>) {
for (stub in stubs) {
whenever(stub.invocation()).thenReturn(stub.returnValue)
}
}

现在,当我尝试内联stubIt函数时,我没有得到任何性能优势(即StubModel中的 lambda 参数没有内联,这就是我想要内联功能的原因(,如何让 kotlin 编译器在调用站点的模型类中内联 lambda 参数?

是不可能的。作为StubModel的属性,invocation需要是一个对象实例并存储为对象实例。这只是内函数的用途。此外,将列表作为参数使得无法内联任何内容,因为编译器应该如何在运行时知道这些值。

相关内容

  • 没有找到相关文章

最新更新