繁体   English   中英

与Scala中的数组类型不匹配

[英]Type mismatch with Array of Array in Scala

我试图建立一个数组的数组,以将其作为方法的参数。 内部数组的值是任何类型的数据(AnyVal),例如Int或Double。

该方法的签名如下:

def plot[T <: AnyVal](config:Map[String, String], data:Array[Array[T]]): Unit = {

这是代码:

val array1 = (1 to 10).toArray
val array2 = ArrayBuffer[Int]()
array1.foreach { i =>
  array2 += (getSize(summary, i))
}
val array3 = new Array[Int](summary.getSize())

val arrays = ArrayBuffer[Array[AnyVal]](array1, array2.toArray, array3) # <-- ERROR1
Gnuplotter.plot(smap, arrays.toArray) # <-- ERROR2

但是,我有两个错误:

在此处输入图片说明在此处输入图片说明

可能是什么问题?

Array是可变数据结构,不是协变的( 这就是原因

因此Array[Int]不是Array[AnyVal]的子类型,因此您不能在需要Array[AnyVal]地方传递它。

List会为您服务吗?

如果性能很重要,并且您确实需要使用Array ,则可以将所有内容都强制转换为Array[Any]并完成操作。

另外,如果只需要将Array[Any]作为传递给plot函数的最终类型,则可以使用List进行所有操作,最后使用toArray[Any]进行转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM