27

有没有办法有效地做到这一点,也许是通过 toBuffer 或 to 方法?我真正的问题是我正在从解析器中构建一个列表,如下所示:

lazy val nodes: Parser[List[Node]] = phrase(( nodeA | nodeB | nodeC).*)

但是在构建它之后,我希望它成为一个缓冲区 - 我只是不确定如何直接从解析器构建一个缓冲区。

4

1 回答 1

52

to确实可以解决问题,而且使用起来非常简单:

scala> val l = List(1,2,3)
l: List[Int] = List(1, 2, 3)
scala> l.to[ListBuffer]
res1: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3)

在 scala 2.10.x 中工作

对于 scala 2.9.x,您可以执行以下操作:

scala> ListBuffer.empty ++= l
res1: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3)
于 2013-01-21T16:37:03.030 回答