kotlin - Kotlin - 无法通过解构声明为lateinit vars分配新值
问题描述
以下 Kotlin 代码有效
val (x, y) = getSomeXYPair()
但是你不能用lateinit
全局变量来做到这一点
class Foo {
private lateinit var x: Int
private lateinit var y: Int
init {
(x, y) = getSomeXYPair()
}
}
我只是想知道我是否做错了什么,或者这在 Kotlin 中不受支持?
解决方案
您不能使用任何类型的变量来执行此操作,无论是否为本地变量:
fun main() {
var x : Int = 1
var y : Int = 2
(x, y) = getSomeXYPair()
}
这种语法在 Kotlin 中是完全无效的。您需要使用var
或开始解构声明val
:
https ://kotlinlang.org/docs/reference/multi-declarations.html#destructuring-declarations
也就是说,撇开lateinit
原始类型(例如Int
.
推荐阅读
- python - PyOpenGL - 如何加载在 mtl 文件中定义了颜色的 obj 文件
- numpy - 用对应于另一个数组的索引替换值
- java - SpringBoot - RequestMapping 将路径作为变量?
- teradata - 是否可以在 teradata 中进行多个活动计数检查?
- javascript - 我无法在 ios14.2 Safari 中播放带有静音属性的 html 音频
- c# - .Net 核心服务调用抛出 SocketException:试图以访问权限禁止的方式访问套接字
- c - 在 CLion 上找不到带有 MS-MPI 的 MPI(缺少:MPI_C_FOUND MPI_CXX_FOUND)
- javascript - 如何创建具有多个输入框的两列表
- javascript - 浏览器同步不为远程站点注入 CSS
- oauth-2.0 - 如何使用 Firebase 身份验证令牌使用 js 列出用户博客