我正在尝试传递可以存储Double,Int,Long等值的数组。
val input = arrayOf(1.3, 4.5)
val output = arrayOf(3) // Error Kotlin: Type mismatch: inferred type is Array<Int> but Array<Any> was expected
magic(input, output)
fun magic(input: Array<Any>, output: Array<Any>) {
// Do the magic
}
我必须使用哪种类型的参数来做到这一点?
答案 0 :(得分:1)
您可能正在寻找Number
fun magic(input: Array<Number>, output: Array<Number>) {
// Do the magic
}
val input = arrayOf<Number>(1.3, 4.5)
val output = arrayOf<Number>(3)
magic(input, output)
答案 1 :(得分:0)
根据您的要求,您可以使用Number
课程。 Kotlin网站上的文档指出 - Number
是“代表数值的所有平台类的超类”
您可以修改magic
功能,如下所示 -
fun magic(input: Array<Number>, output: Array<Number>) {
// Do the magic
}
然后,通过构造函数所需的参数来调用该函数 -
val input = arrayOf<Number>(1.3, 4.5)
val output = arrayOf<Number>(3)
magic(input, output)