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

Kotlin中如何优雅合并apply与let语句实现非空条件下的Builder操作

方案1:无需自定义扩展的极简写法

现有代码可以直接简化为更紧凑的写法,不需要额外定义工具函数,和原逻辑完全等价:

private fun buildIcon(color: Color? = null) =
    Icon.Builder()
        .apply { color?.let(::setColor) }

方案2:自定义applyIfNotNull通用扩展

如果需要多次使用这类非空才执行的链式逻辑,可以定义一个泛型扩展函数,完全匹配你想要的调用格式:

// 放在顶层工具类中全局复用即可
fun <T, V> T.applyIfNotNull(value: V?, block: T.(V) -> Unit): T {
    if (value != null) block(value)
    return this
}

定义完成后即可直接使用目标写法:

private fun buildIcon(color: Color? = null) =
    Icon.Builder()
        .applyIfNotNull(color) { setColor(it) }

内容的提问来源于stack exchange,提问作者Marcel Iwanicki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:48:01