我想要一個行內函式來過濾串列并在沒有匹配時回傳原始串列而不是回傳 null
我有這個功能可以過濾串列并回傳過濾后的串列或空
fun List<Obj>?.filterQueryText(queryText : String?) = this?.filter {
queryText.equals(it.objName)
}.orEmpty()
如果在查詢中找不到匹配項,我該如何使它回傳到原始串列?
uj5u.com熱心網友回復:
這應該可以解決問題
fun List<Obj>?.filterQueryText(queryText : String?) = this?.filter {
queryText.equals(it.objName)
}?.run {if (isEmpty()) this@filterQueryText else this}.orEmpty()
在這里看到它的實際效果
uj5u.com熱心網友回復:
通用過濾器List<T>:
fun <T> List<T>?.filterOrOriginal(predicate: (T) -> Boolean) : List<T>? =
this?.filter(predicate).takeUnless { it.isNullOrEmpty() } ?: this
特定過濾器List<Obj>:
fun List<Obj>?.filterQueryTextOrOriginal(queryText : String?) : List<Obj>? =
this?.filterOrOriginal { queryText == it.objName }
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/312846.html
標籤:科特林
