gpt4 book ai didi

kotlin - 调用解构声明初始值设定项的 'component1()' 函数所需的不可为空值

转载 作者:行者123 更新时间:2023-12-02 13:07:44 24 4
gpt4 key购买 nike

是否可以在 Kotlin 中编译以下代码?

val variable: String? = "string"

val (a, b) = variable?.run {
1 to 2
}

最佳答案

编译器不允许解构,因为右侧的表达式被键入为可以为空的 Pair<Int, Int>? ,尚不清楚什么值 ab应该得到以防万一variable一片空白。

要解决这个问题,您需要在 = 之后得到一个非空表达式。 .

有很多不同的方法可以处理可空值并从可空值生成非空值,请参阅:In Kotlin, what is the idiomatic way to deal with nullable values, referencing or converting them

例如,如果您想为 a 提供后备值和 b ,然后使用 ?:运算符如下:

val (a, b) = variable?.run {
1 to 2
} ?: (0 to 0)

例如,另一种方法是检查 variable首先为空:
val (a, b) = checkNotNull(variable) { "variable should never be null" }.run {
1 to 2
}

关于kotlin - 调用解构声明初始值设定项的 'component1()' 函数所需的不可为空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60533380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com