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
相关产品推荐
相关产品推荐

