kotlin - Kotlin 中的这种语法是什么
问题描述
val (_,time) = time { Thread.sleep(1000) }
我看到左侧(LHS)有一个 val,所以它声明了一个变量。LHS 也有某种看起来不像 lambda 声明的函数语法。是什么(_,time)
?你不需要给 LHS 上的时间打个类型吗?我非常了解 RHS:它是一个接受 lambda 作为参数并被命名为“时间”的函数。原始代码
解决方案
左侧称为解构。
如果您尝试将数据类的实例(或任何class
具有componentN
函数的实例)分配给变量,则可以对其进行破坏。这意味着您可以将其内部分配给变量。_
语法表明您不关心第一项。
例子:
class Foo(val first: String, val second: String) {
operator fun component1() = first
operator fun component2() = second
}
用法:
val (first, second) = Foo("first", "second")
如果你使用data class
es 你不需要创建componentN
函数,它们是为你生成的。
等效data class
:
data class Foo(val first: String, val second: String)
推荐阅读
- c - 使用 C 中的列表从递归组合打印
- python - django 渴望加载一对多关系
- python - 不明白这个嵌套函数是如何工作的
- python - Python-为什么 imshow() 会为非零数组产生空白图像?
- python - 我怎样才能让我用 kivy 构建的应用程序在 Android 上运行?
- node.js - Node PKG 无法从使用 EJS 的应用程序构建可执行文件
- amazon-web-services - Cloudformation SubnetList 获取 CidrBlock
- r - 有没有更有效的方法来对不规则的重复二进制触发列上的时间序列数据帧进行子集化?
- crystal-reports - 如果其他字段不重复,如何隐藏显示的唯一字段的重复项
- r - R中有没有办法将分类变量(字符)排序为排序的序数数据?