為簡單起見,我將堅持在代碼中使用抽象。所以我正在撰寫一個函式,它只在它不為空時才使用一些可為空的顏色來設定它。我正在使用構建器,代碼如下所示:
private fun buildIcon(color: Color? = null) =
Icon.Builder()
.apply{ color?.let { this.setColor(color) } }
它有效但看起來有點難看,我如何將它整合到一個陳述句中,比如 applyIfNotNull(color) { this.setColor(it) },但也許更簡單,我只想將這些陳述句合并為一個。我嘗試這樣做,就像如何為 Kotlin 實作 applyif 一樣?但不能讓它作業。
uj5u.com熱心網友回復:
您可以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) }
您可以在此處進行驗證。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/339704.html
