如何破坏Kotlin中的构造函数
我怎样才能以这种方式在Kotlin上编写一个类,这样在初始化时就可以破坏它,例如:
val (set, list, map) = CollectionsGenerator(arg1, arg2)
为了解构一个对象,你需要定义一个具有以下形式的方法(其中X
是一个从1开始的数字,返回类型可以是你希望返回的任何东西):
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 }
这里是关于解构声明的官方文档。