我想要一个ArrayBuffer的二维数组
这样的事情:
var myRowOfStrings = new ArrayBuffer[String]
val myArrayOfRows = new ArrayBuffer[ArrayBuffer] // To store many ArrayBuffer[String]
但是Scala编译器不喜欢第二个声明:
scala> val myArrayOfRows = new ArrayBuffer[ArrayBuffer]
<console>:8: error: class ArrayBuffer takes type parameters
val myArrayOfRows = new ArrayBuffer[ArrayBuffer]
^
我的语法错了吗?
或者ArrayBuffer的ArrayBuffer不可能吗?
答案 0 :(得分:11)
ArrayBuffer
个对象需要一个类型。它在错误消息中这样说。
您需要告诉编译器您想要的ArrayBuffer
类型。
scala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer
scala> val myArrayOfRows = new ArrayBuffer[ArrayBuffer[String]]
myArrayOfRows: scala.collection.mutable.ArrayBuffer[scala.collection.mutable.ArrayBuffer[String]] = ArrayBuffer()
如果更容易,请考虑这样做。
type Row = ArrayBuffer[String]
var myRowOfStrings = new Row
val myArrayOfRows = new ArrayBuffer[Row]
答案 1 :(得分:0)
在应用它之前先导入ArrayBuffer:
import scala.collection.mutable.ArrayBuffer
var e = ArrayBuffer("a", "b", "c")
scala> e: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(a, b, c)