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

Kotlin中过滤后列表为空时返回null的更简洁写法

可行的简洁实现方案

Kotlin 标准库已经提供了原生扩展函数可以直接实现你要的逻辑,不需要额外声明临时变量,两种常用写法如下:

方案1:使用 ifEmpty 扩展函数(语义最直观,推荐)

集合类自带的 ifEmpty 函数会在调用方为空集合时返回 lambda 内的结果,否则返回集合本身,刚好匹配你的需求:

someState.value = someList.filter { /* 你的过滤条件 */ }.ifEmpty { null }

方案2:使用 takeIf 作用域函数

你提到的作用域函数也可以实现,用 takeIf 即可:满足判断条件时返回自身,否则返回 null:

someState.value = someList.filter { /* 你的过滤条件 */ }.takeIf { it.isNotEmpty() }

额外说明

如果你的 someList 本身是可空类型,额外补安全调用符即可:

someState.value = someList?.filter { /* 过滤条件 */ }?.ifEmpty { null }

两种方案的效果和你原来的写法完全等价,没有额外性能损耗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:54:03