Kotlin中的语法是什么

时间:2018-06-25 14:55:22

标签: kotlin

val (_,time) = time { Thread.sleep(1000) }

我看到左侧(LHS)有一个val,因此它声明了一个变量。 LHS还具有某种类似于lambda声明的函数语法。什么是(_,time)?您是否不必在LHS上输入时间?我非常清楚RHS:它是一个接受lambda作为参数的函数,名为“ time”。 Original code

1 个答案:

答案 0 :(得分:4)

左侧称为destructuring

如果您尝试将数据类的实例(或具有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)