所以我有一些数据:
val data = Array[(Array[String], Long)]
这是一个对数组,其中每对由另一个数组和一个数字组成。我创建了一个listbuffer,如下所示:
var x = ListBuffer[(Array[String], Long)]
我想将某些索引i
的元素附加到x
。我做以下操作:
x += data(i)
但是,我得到错误:
键入不匹配,预期:字符串,实际:( array [string],long)
我在做什么错?我在Intellij和Scala 2.10.7。
工作也此示例(这是一个具体示例(我不能提供原始示例))也给出了相同的错误:
val xData = ListBuffer[(Array[String], Long)]
var x = ListBuffer[(Array[String], Long)]
x += xData(0)
我刚刚在scala repl中尝试了同一件事,而且工作正常。
我所做的是 -
scala> val arr = Array("Hello", "Bye")
arr: Array[String] = Array(Hello, Bye)
scala> var data = Array((arr,1), (arr,2))
data: Array[(Array[String], Int)] = Array((Array(Hello, Bye),1),
(Array(Hello, Bye),2))
scala> import scala.collection.mutable.ListBuffer
import scala.collection.mutable.ListBuffer
scala> val list = ListBuffer((arr, 1))
list: scala.collection.mutable.ListBuffer[(Array[String], Int)] =
ListBuffer((Array(Hello, Bye),1))
scala> list += data(0)
res1: list.type = ListBuffer((Array(Hello, Bye),1), (Array(Hello,
Bye),1))
它没有给出任何错误
,所以问题是我在listbuffer initiation结束时忘记了括号。
这有效:
var x = ListBuffer[(Array[String], Long)]()