2

我想要一个 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 是不可能的?

4

2 回答 2

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]
于 2012-08-15T03:35:13.043 回答
0

在应用之前导入 ArrayBuffer:

import scala.collection.mutable.ArrayBuffer
var e = ArrayBuffer("a", "b", "c")
scala> e: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(a, b, c)
于 2020-12-15T21:18:28.620 回答