Kotlin:如何以一种很好的方式将两个语句放在一起"apply"和"let"?



为了简单起见,我将坚持在代码中使用抽象。我在写一个函数,它取一个可空的颜色来设置它,只有当它不为空时。我使用的是Builder,代码看起来像这样:

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

它可以工作,但是看起来有点丑,我如何把它做成一个语句,比如applyIfNotNull(color) {this。setcolor (It)},但也许更简单,我只想把这些语句合并成一个。我试着这样做,就像在如何实现Kotlin的应用程序?但我不能让它工作。

你可以这样实现你的applyIfNotNull函数:

inline fun <T, U> T.applyIfNotNull(value: U?, block: T.(U) -> Unit): T {
if(value != null)
this.block(value)
return this
}

用法:

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

你可以在这里验证。

相关内容

  • 没有找到相关文章

最新更新