【发布时间】:2021-12-13 08:30:21
【问题描述】:
为了简单起见,我将坚持代码中的抽象。 因此,我正在编写一个函数,该函数仅在不为空时才采用一些可为空的颜色来设置它。我正在使用 Builder,代码如下所示:
private fun buildIcon(color: Color? = null) =
Icon.Builder()
.apply{ color?.let { this.setColor(color) } }
它可以工作,但看起来有点难看,我如何将它变成一个语句,所以类似于 applyIfNotNull(color) { this.setColor(it) },但可能更简单,我只是想将这些语句合并为一个.我尝试像在how to implement an applyif for Kotlin? 中那样执行此操作,但无法使其工作。
【问题讨论】:
-
值得检查将颜色设置为
null是否有任何危害。 (例如,它可能会告诉图标从其容器继承颜色。) 如果没有,那么您可以省略检查并总是调用setColor()。 -
它实际上是从资源创建图标,如果没有提供 setColor,你会得到默认颜色——这就是我们不向 buildIcon() 提供颜色时应该发生的情况。 setColor 函数也接受不可为空的参数,所以不是这样
标签: kotlin apply nullable builder let