14

ScalaでにSeq変換する簡潔な方法はありますか?ArrayBuffer

4

2 に答える 2

28
scala> val seq = 1::2::3::Nil
seq: List[Int] = List(1, 2, 3)

scala> seq.toBuffer
res2: scala.collection.mutable.Buffer[Int] = ArrayBuffer(1, 2, 3)

編集Scala 2.1x 以降では、次のように使用できるTraversableLike.to[Coll]で定義されたメソッドがあります。

scala> import collection.mutable
import collection.mutable

scala> seq.to[mutable.ArrayBuffer]
res1: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3)

scala> seq.to[mutable.Set]
res2: scala.collection.mutable.Set[Int] = Set(1, 2, 3)
于 2011-09-26T10:42:17.083 に答える
12

これはうまくいきます:

ArrayBuffer(mySeq : _*)

いくつかの説明: これはArrayBuffer コンパニオン オブジェクトの apply メソッドを使用します。そのメソッドのシグネチャは

def apply [A] (elems: A*): ArrayBuffer[A]

つまり、可変数の引数を取ります。例えば:

ArrayBuffer(1, 2, 3, 4, 5, 6, 7, 8)

も有効な呼び出しです。ascription : _* は、可変数の引数の代わりに Seq を使用する必要があることをコンパイラに示します ( Scala リファレンスのセクション 4.6.2 を参照)。

于 2011-09-26T09:52:49.753 に答える