将Array转换为ListBuffer的惯用法

时间:2014-09-24 17:20:14

标签: scala type-conversion idiomatic

我正在寻找比这更清洁的解决方案:

import scala.collection.mutable.ListBuffer

val y = Array(1,2,3,4)
val z = new ListBuffer[Int]()
y.foreach(elem => z += elem)

2 个答案:

答案 0 :(得分:7)

另一种方法是使用to转换方法:

import scala.collection.mutable.ListBuffer

val arr: Array[Int] = Array(1, 2, 3, 4)
val buf: ListBuffer[Int] = arr.to[ListBuffer]

对变量进行类型注释当然是多余的,为了清楚起见,我添加了它们。

to非常通用,它允许在任意集合之间进行转换(即,从任何Traversable到任何在范围内具有适当CanBuildFrom实例的任何集合。

答案 1 :(得分:2)

怎么样:

val z = ListBuffer(y: _ *)

ListBuffer.apply接受varargs样式的元素序列。签名为apply[A](elems: A *): ListBuffer[A]为了将序列应用于此类函数,我们使用语法: _ *