Kotlin Any - 双重失误

时间:2018-03-31 04:07:43

标签: kotlin

我正在尝试传递可以存储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
}

我必须使用哪种类型的参数来做到这一点?

2 个答案:

答案 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)