如何在Kotlin中破坏构造函数

时间:2017-03-27 16:00:27

标签: kotlin

如何以这种方式在Kotlin中编写一个类,以便我可以在初始化时破坏它,如:

val (set, list, map) = CollectionsGenerator(arg1, arg2)

1 个答案:

答案 0 :(得分:5)

为了对对象进行构造,您需要在其上定义具有以下形式的方法(其中X是从1开始的数字,返回类型可以是您想要返回的任何内容):< / p>

operator fun componentX(): Any {}

要做一些类似于问题中的内容,您可以将已构建类的参数保存到属性中,然后component方法可以使用这些属性:

class SetAndListMaker(val i: Int, val s: String) {

    operator fun component1() = setOf(i, s)

    operator fun component2() = listOf(i, s)

}

fun main(args: Array<String>) {
    val (set, list) = SetAndListMaker(25, "dog")
}

这个主要功能与此无异,当然:

fun main(args: Array<String>) {
    val setAndListMaker = SetAndListMaker(25, "dog")
    val (set, list) = setAndListMaker
}

And here's the official documentation about destructuring declarations.