?:用来在表达式为空时给一个默认值.
记录于此,方便自己查阅。
正文
val result = a ?: b含义是:
如果
a不为 null,就用a;否则用b
等价于:
val result = if (a != null) a else b给可空变量设置默认值
val name: String? = null val displayName = name ?: "匿名用户" println(displayName) // 匿名用户
配合函数返回值使用
fun getName(): String? { return null } val name = getName() ?: "默认名字"
在返回语句中使用
fun getLength(text: String?): Int { return text?.length ?: 0 }
解释:
text?.length→ 如果text为 null,结果是 null?: 0→ 如果前面是 null,返回 0
抛出异常
val age: Int? = null val realAge = age ?: throw IllegalArgumentException("age 不能为空")
结合集合 / 映射使用
val map = mapOf("a" to 1) val value = map["a"] ?: map["b"] ?: 0
链式使用
val result = first() ?: second() ?: third() ?: "default"
参考文章
Kotlin 资料

