kotlin - 调用解构声明初始化程序的“component1()”函数需要不可为空的值
问题描述
是否可以在 Kotlin 中编译以下代码?
val variable: String? = "string"
val (a, b) = variable?.run {
1 to 2
}
解决方案
编译器不允许解构,因为右侧的表达式被键入为 nullable Pair<Int, Int>?
,并且不清楚在为 null的情况a
下b
应该获取什么值。variable
要解决这个问题,您需要在=
.
有很多不同的方法可以处理可空值并从可空值生成非空值,请参阅:在 Kotlin 中,处理可空值、引用或转换它们的惯用方法是什么
例如,如果您想为a
and提供后备值b
,则使用?:
运算符,如下所示:
val (a, b) = variable?.run {
1 to 2
} ?: (0 to 0)
例如,另一种方法是先检查variable
null:
val (a, b) = checkNotNull(variable) { "variable should never be null" }.run {
1 to 2
}
推荐阅读
- jquery - 检查并输入计数值
- google-app-engine - GCP App Engine 无法提供 JavaScript 等资源文件
- javascript - Reactjs 组件中的“需要”
- css - 使用 grid-row:span 时相邻单元格的 CSS Grid 垂直分布
- android - 使用 React-Native 0.55.4 和 Expo 28.0.0 卡在启动画面上
- python - 在 Django 管理面板中上传图片后,我无法在模板中看到它?
- scala - Scala Play 中的多部分文件上传
- ios - 如何从 IOS 应用程序启动关联的手表应用程序
- r - 基于重叠分布均衡两个数据子集中的试验次数
- javascript - 如何在webite中识别js/css文件包含的来源