如何以这种方式在Kotlin中编写一个类,以便我可以在初始化时破坏它,如:
val (set, list, map) = CollectionsGenerator(arg1, arg2)
答案 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.