ScalaでにSeq
変換する簡潔な方法はありますか?ArrayBuffer
17675 次
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 に答える