我想从两个数组中创建一个数组。
var a1 = arrayOf(1, 2, 3)
var a2 = arrayOf(4, arrayOf(5,6), 7)
var a3 = a1 + a2
但是我得到一个编译错误:
None of the following functions can be called with the arguments supplied:
public operator fun <T> Array<???>.plus(element: ???): Array<???> defined
in kotlin.collections
public operator fun <T> Array<???>.plus(elements: Array<out ???>):
Array<???> defined in kotlin.collections
public operator fun <T> Array<Int>.plus(elements: Collection<Int>):
Array<Int> defined in kotlin.collections
我怎样才能把它们结合起来?
在这种情况下,类型推断对您不利。a1
并且a2
被推断为不同类型的数组,因此您无法将它们加在一起。您应该做的第一件事是使它们具有相同的类型Array<Any>
:
var a1: Array<Any> = arrayOf(1, 2, 3)
var a2: Array<Any> = arrayOf(4, arrayOf(5,6), 7)
然后,您将看到一个关于 2 次重载的模棱两可的方法调用错误plus
。重载仅在参数名称上有所不同。我们想使用带有elements
参数的那个,它添加了另一个数组中的所有元素:
var a3 = a1.plus(elements = a2)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句