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

Kotlin中实现“非空时执行require校验”的惯用写法

Kotlin中优雅处理可空参数的require校验

你可以使用Kotlin的?.let操作符替代显式的null判断,这是更符合Kotlin惯用风格的写法:

写法一:代码块形式

fun getEmergencyAddresses(dp: MyDependencyProvider, siteId: String, level: Int? = null) {
    level?.let { nonNullLevel ->
        require(nonNullLevel in 0..2) { "level must be 0, 1, or 2" }
    }
}

如果不需要自定义参数名,也可以用默认的it简化:

fun getEmergencyAddresses(dp: MyDependencyProvider, siteId: String, level: Int? = null) {
    level?.let {
        require(it in 0..2) { "level must be 0, 1, or 2" }
    }
}

写法二:紧凑单行形式

如果逻辑简单,还可以压缩成一行代码,保持可读性的同时更简洁:

fun getEmergencyAddresses(dp: MyDependencyProvider, siteId: String, level: Int? = null) {
    level?.let { require(it in 0..2) { "level must be 0, 1, or 2" } }
}

这种写法利用Kotlin的空安全操作符?.,只有当level不为null时,才会执行let块内的require校验,完全避免了显式的if (level != null)判断,更贴合Kotlin的语法特性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 12:04:55