web-dev-qa-db-ja.com

Scalaにタプルをリストに変換するメソッドが含まれていますか?

_Tuple2_の_List[List[String]]_があり、タプルをリストに変換してList.transpose()を使用できるようにしたいと考えています。これを行う方法はありますか?また、私はそれがPairであることを知っていますが、私は常に一般的なソリューションのファンです。

41
pr1001

任意のタプルで動作します(scala 2.8):

myTuple.productIterator.toList

Scala 2.7:

(0 to (myTuple.productArity-1)).map(myTuple.productElement(_)).toList

一般的な製品またはタプルのタイプ情報を維持する方法がわからないが、タプル2の場合:

def Tuple2ToList[T](t: (T,T)): List[T] = List(t._1, t._2)

もちろん、すべてのタプル(最大22)に対して同様のタイプセーフな変換を定義することもできます。

77
Mitch Blevins

シェイプレスの使用-

@ import syntax.std.Tuple._
import syntax.std.Tuple._
@ (1,2,3).toList
res21: List[Int] = List(1, 2, 3)
@ (1,2,3,4,3,3,3,3,3,3,3).toList
res22: List[Int] = List(1, 2, 3, 4, 3, 3, 3, 3, 3, 3, 3)

ShapelessのtoListを使用しても型情報は失われないことに注意してください。

8
Michael T