我写了一个如下所示的逻辑
fun snippet(value: String?): String {
when (value?.toUpperCase()) {
"A" -> "A"
"B" -> "B"
else -> ""
}
}
""
当变量的值为 时value
它会返回null
吗?
我写了一个如下所示的逻辑
fun snippet(value: String?): String {
when (value?.toUpperCase()) {
"A" -> "A"
"B" -> "B"
else -> ""
}
}
""
当变量的值为 时value
它会返回null
吗?
那else
会抓住它,你也可以null
直接在你的when
块中检查:
when (value?.toUpperCase()) {
..
null -> ""
}
是的,它会的。
或者至少,一旦你修复了一个语法错误……(函数被定义为返回一个字符串,但不返回任何内容。要解决这个问题,要么在 -return
之前添加when
- 要么使其成为表达式主体,替换首先{
使用=
并删除最后一个}
。后一种情况对于短函数更简单,尤其是因为您也可以删除返回类型;但它不太适合较长的函数。)
最简单的检查方法当然是自己运行!但是,是的,在修复语法之后,如果用 调用它确实会返回一个空字符串null
。
如果 LHS 是,则?.
(安全调用)运算符将绕过对 的调用,并将直接传递给. 并且由于不等于or ,它会落入分支,从而给出空字符串。toUpperCase()
null
null
when
null
"A"
"B"
else
正如另一个答案指出的那样,您当然可以null
明确检查。但是 Kotlin 为您提供了几种更简洁地处理空值的工具(例如这里的安全调用运算符),因此您通常不需要。