构造函数使用可变参数在kotlin中调用
有没有什么办法可以调用构造函数使用可变参数没有硬编码数组参数( datain[0]
, datain[10]
等)。 例如,
constructor(vararg datain:String): this(datain[0],datain[1],datain[2]){ }
目前我打电话是这样的:
public class parent(var var1:String, var var2:String){ } public class child(var var3:String, var1:String, var2:String): parent(var1,var2){ constructor(vararg datain:String): this(datain[0],datain[1],datain[2]){ } }
这似乎有点没有意义,因为vararg
可以包含比其他构造函数所期望的更多或更少的项目。 另外,当所有的参数具有相同的类型时,这是相当罕见的情况,所以vararg
将会被包含。 但是,不,目前没有将可变参数分解为函数或构造函数调用非可变参数的语言功能。
我想,语言设计会让你明确地显示你选择了某些vararg
因为它不包含任何隐藏的陷阱,你总是会意识到索引。
但是你可以传递一个vararg
参数作为vararg
参数给另一个函数或构造函数,可能已经对它进行了转换。 这是由传播运算符 *
完成的,请参阅示例:
public class V(vararg s: String) { constructor(vararg s: Int): this("a", *s.map(Int::toString).toTypedArray(), "b") }
任何正确类型的数组都可以使用*
(包括vararg
本身,因为它是一个数组),但这是vararg
的威力所在。