一、常用符合符号记录一下
-
‘?’
-
‘?.’
Java表达:
if (foo != null){
return foo.bar();
}else{
return null;
}
- ‘?:’
Java表达:
if (foo != null){
return foo;
}else{
return bar;
}
- ‘!!’
Java表达:
if (foo != null){
return foo;
}else{
return throw new NullPointerException();
}
二、空处理及举例
- If not null 缩写
println(files?.size)
val files = File("Test").listFiles()
println(files?.size)
- If not null and else 缩写
val files = File("Test").listFiles()
println(files?.size ?: "empty")
- if null 执行一个语句
val values = ……
val email = values["email"] ?: throw IllegalStateException("Email is missing!")
- 在可能会空的集合中取第一元素
val emails = …… // 可能会是空集合
val mainEmail = emails.firstOrNull() ?: ""
- if not null 执行代码
val value = ……
value?.let {
…… // 代码会执行到此处, 假如data不为null
}
- 映射可空值(如果非空的话)
val value = ……
val mapped = value?.let { transformValue(it) } ?: defaultValue
// 如果该值或其转换结果为空,那么返回 defaultValue。