val (_,time) = time { Thread.sleep(1000) }\nRun 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。原始代码
左侧称为解构。
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)
| 归档时间: |
|
| 查看次数: |
639 次 |
| 最近记录: |