我无法在 Kotlin 中使用 elvis 运算符
I am not able make use of elvis operator in Kotlin
我无法在 Kotlin 中使用 ?: 运算符。我们应该如何以及何时使用它对我来说仍然没有意义。
谁能告诉我一下吗?
想一个场景,您需要长度的用户名。
现在,由于不同的原因,用户名本身可能为 null,如果您尝试从该用户名中获取长度,您将得到著名的 NullPointerException - 这是 null。这不是一个好的用户体验。
但如果以某种方式,当用户名为 null 时,我们可以 return 一些整数值,那么我们的应用程序就不会崩溃!
遇到这种情况,我们可以利用猫王运算符(?:).
这是一个代码片段:
var username: String? = null
fun main() {
val firstResult: Int = username!!.length //Gives NPE and the app crashes
println(firstResult)
val secondResult: Int = username?.length ?: -1 //By using ?: operator, the app survives with -1 value
println(secondResult)
}
left侧?: operator如果是non-null[=34=将被考虑].
但是如果是null,那么right这边的?: operator就会被执行
这就是 Elvis 运算符 (?:) 的工作方式。
我无法在 Kotlin 中使用 ?: 运算符。我们应该如何以及何时使用它对我来说仍然没有意义。 谁能告诉我一下吗?
想一个场景,您需要长度的用户名。 现在,由于不同的原因,用户名本身可能为 null,如果您尝试从该用户名中获取长度,您将得到著名的 NullPointerException - 这是 null。这不是一个好的用户体验。
但如果以某种方式,当用户名为 null 时,我们可以 return 一些整数值,那么我们的应用程序就不会崩溃!
遇到这种情况,我们可以利用猫王运算符(?:).
这是一个代码片段:
var username: String? = null
fun main() {
val firstResult: Int = username!!.length //Gives NPE and the app crashes
println(firstResult)
val secondResult: Int = username?.length ?: -1 //By using ?: operator, the app survives with -1 value
println(secondResult)
}
left侧?: operator如果是non-null[=34=将被考虑]. 但是如果是null,那么right这边的?: operator就会被执行
这就是 Elvis 运算符 (?:) 的工作方式。