首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Kotlin和项目反应器中的通量或单目标上嵌入函数映射

如何在Kotlin和项目反应器中的通量或单目标上嵌入函数映射
EN

Stack Overflow用户
提问于 2019-05-19 18:50:00
回答 2查看 769关注 0票数 0

我正在尝试开发一个使用Kotlin和Project反应堆的演示应用程序,我想在像FluxMono这样的对象上嵌入一些功能,比如Flux

我确实喜欢这样:

代码语言:javascript
复制
private inline fun Flux<Account>.map(noinline transformer: (Account) -> AccountDTO): Flux<AccountDTO> {
    return this.map(transformer)
}

但这并不好,因为我收到了IDEA发出的以下警告:

代码语言:javascript
复制
Expected performance impact of inlining 'private open inline fun Flux<Account>.map(noinline transformer: (Account) -> AccountDTO): Flux<AccountDTO> defined in com.freesoft.reactiveaccountservice.api.controller.AccountController' is insignificant. Inlining works best for functions with parameters of functional types.

有没有人知道我如何实现这个内联函数,或者实现它是否重要?

Tx!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-20 06:49:54

只要您只是调用在Java中定义的非内联map,就不会有任何好处。原则上,您可以查看Java定义,并将其转换为Kotlin,并将其转换为内联map的定义,但是(不加检查),我希望它只是类似于return new MapFlux(...)的东西,这两者都不会受益,因为lambda需要存储在字段中。

因此,您需要在Kotlin重新实现相当一部分库。

票数 2
EN

Stack Overflow用户

发布于 2019-05-19 19:11:56

通常,您希望内联lambda函数,这些函数被传递到高阶函数中,因为它减少了运行时开销。当您内联lambda时,将不会在运行时创建匿名类和函数引用对象。在您的例子中,内联不会提高性能,因为它是一个常规函数。您可以通过示例这里阅读完整的说明。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56210976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档