Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何传递数组<;Int>;使用Spread运算符调用vararg Int函数?_Arrays_Kotlin_Groovy Spread - Fatal编程技术网

Arrays 如何传递数组<;Int>;使用Spread运算符调用vararg Int函数?

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之

我有一个vararg函数,它接受多个
Int
s。我有一个
数组
,我想用作输入

失败的尝试: 下面是我尝试使用调用函数的步骤:

尝试更正错误:
  • 我在网上搜索,看看是否可以将
    数组
    转换为
    数组
    ,因为这可能会满足编译器的要求。除了(
    IntArray
    to
    Array
    )之外,我什么也看不到

  • 调用
    arrayOf
    时,我尝试指定泛型类型。例如,(1,2,3)的数组。这(出于明显的原因)不起作用

笔记:
  • 我正在使用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)