You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin是否存在原生的条件式.also函数?

Kotlin是否有原生的条件式.also函数?

Kotlin标准库中没有原生提供类似你需求的.alsoIf这种带条件判断的链式扩展函数。

你自己实现的alsoIf函数非常贴合使用场景,它的设计风格和标准库中的also、let等作用域函数保持一致,并且因为标记为inline,不会带来额外的性能开销,完全可以放心使用:

private inline fun <T> T.alsoIf(shouldRunBlock: (T) -> Boolean, block: (T) -> Unit): T {
    if (shouldRunBlock(this)) {
        block(this)
    }
    return this
}

如果不想自定义函数,也可以通过标准库中的takeIf配合also实现类似效果,但写法相对繁琐:

extractProcessorCode(originalRequest)
    .also { transactionType ->
        transactionType.takeIf { it == UNKNOWN }?.also {
            logger.warn("ProcessorTransactionType unsuccessfully extracted from originalRequest for id: $id")
        }
    }

显然这种写法不如你自定义的.alsoIf简洁直观,所以更推荐使用你自己实现的版本。

内容的提问来源于stack exchange,提问作者Max Hunter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 10:29:57