这是什么语法,声明站点的变量/属性名称周围有括号?

Ana*_*man 4 kotlin

val (_,time) = time { Thread.sleep(1000) }\n
Run Code Online (Sandbox Code Playgroud)\n\n

我看到左侧 (LHS) 有一个 val,因此它声明了一个变量。LHS 还有某种函数语法,它看起来不像 lambda 声明。什么是(_,time)?Don\xe2\x80\x99t 你必须给 LHS 上的时间一个类型吗?我非常了解 RHS:它是一个接受 lambda 作为参数的函数,名为 \xe2\x80\x98time\xe2\x80\x99。原始代码

\n

Ada*_*old 7

左侧称为解构

class如果您尝试将数据类(或任何具有函数的实例)的实例分配componentN给变量,您可以对其进行解构。这意味着您可以将其内部分配给变量。该_语法表明您不关心第一项。

例子:

class Foo(val first: String, val second: String) {

    operator fun component1() = first

    operator fun component2() = second
}
Run Code Online (Sandbox Code Playgroud)

用法:

val (first, second) = Foo("first", "second")
Run Code Online (Sandbox Code Playgroud)

如果您使用data classes,则无需创建componentN函数,它们会为您生成。

相等的data class

data class Foo(val first: String, val second: String)
Run Code Online (Sandbox Code Playgroud)