Arrays 如何传递数组<;Int>;使用Spread运算符调用vararg Int函数?
我有一个vararg函数,它接受多个Arrays 如何传递数组<;Int>;使用Spread运算符调用vararg Int函数?,arrays,kotlin,groovy-spread,Arrays,Kotlin,Groovy Spread,我有一个vararg函数,它接受多个Ints。我有一个数组,我想用作输入 失败的尝试: 下面是我尝试使用调用函数的步骤: 尝试更正错误: 我在网上搜索,看看是否可以将数组转换为数组,因为这可能会满足编译器的要求。除了(IntArraytoArray)之外,我什么也看不到 调用arrayOf时,我尝试指定泛型类型。例如,(1,2,3)的数组。这(出于明显的原因)不起作用 笔记: 我正在使用Kotlin版本1.0.3 我认为我的一些困惑源于这样一个事实,即我不理解Array和IntArray之
Int
s。我有一个数组
,我想用作输入
失败的尝试:
下面是我尝试使用调用函数的步骤:
尝试更正错误:
- 我在网上搜索,看看是否可以将
转换为数组
,因为这可能会满足编译器的要求。除了(数组
toIntArray
)之外,我什么也看不到Array
- 调用
时,我尝试指定泛型类型。例如,(1,2,3)的数组。这(出于明显的原因)不起作用arrayOf
- 我正在使用Kotlin版本1.0.3
- 我认为我的一些困惑源于这样一个事实,即我不理解
和Array
之间的区别,以及何时选择其中一个IntArray
如何将
数组
传递到需要多个Int
s的vararg函数中?问题在于,在创建数组时,您使用的是装箱的整数
s。这不适用于vararg Int
。它的工作原理是:
使用阵列
,而不是阵列
,可以消除装箱开销,这当然是更好的选择 基本上,Array
是引擎盖下装箱的Integer
对象的数组,而IntArray
转换为基本int
值的数组(请参阅)
要将数组
传递给vararg函数,可以先使用toIntArray()
函数将其转换为IntArray
:
val numbers: Array<Int> = arrayOf(1, 2, 3)
printNumbers(*numbers.toIntArray())
谢谢你的回答。我很难选择一个作为公认的答案。我感谢你的努力。
error: type mismatch: inferred type is Array<Int> but IntArray was expected
printNumbers(*arrayOf<Int>(1, 2, 3))
^
fun printStrings(vararg strings: String) {
strings.forEach { it -> println(it) }
}
val strings: Array<String> = arrayOf("hello", "there", "stackoverflow")
printStrings(*strings)
hello
there
stackoverflow
val numbers: Array<Int> = arrayOf(1, 2, 3)
printNumbers(*numbers.toIntArray())
val numbers = intArrayOf(1, 2, 3)
printNumbers(*numbers)
val numbers: Array<Int> = arrayOf(1, 2, 3)
printNumbers(*numbers.toIntArray())
val numbers: IntArray = intArrayOf(1, 2, 3)
printNumbers(*numbers)