将数组转换为ListBuffer的惯用方法

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

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

import scala.collection.mutable.ListBuffer

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

10

另一种方法是使用 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实例的东西)。


5
如何考虑:
val z = ListBuffer(y: _ *)

ListBuffer.apply接受一个变长参数序列作为元素。签名是apply[A](elems: A *): ListBuffer[A] 为了将这样的序列应用于函数,我们使用: _ *语法。


很棒,它能工作。你能否加上一两句话来解释一下它是如何工作的?我不理解这个构造函数类型或者你正在使用的 * 运算符。 - Hamy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接