【发布时间】:2015-01-25 16:09:30
【问题描述】:
是否可以将异构向量的向量转换为 Scala 中的 Tuple3 列表
即
Vector(Vector(1,"a","b"),Vector(2,"b","c")) to List(Tuple3(1,"a","b"),Tuple3(2,"b","c"))
【问题讨论】:
标签: scala scala-collections scala-2.10 scalaz7
是否可以将异构向量的向量转换为 Scala 中的 Tuple3 列表
即
Vector(Vector(1,"a","b"),Vector(2,"b","c")) to List(Tuple3(1,"a","b"),Tuple3(2,"b","c"))
【问题讨论】:
标签: scala scala-collections scala-2.10 scalaz7
将每个内部Vector 显式转换为Tuple3:
vector.map {
case Vector(f, s, t) => Tuple3(f, s, t)
}.toList
如果您有可变大小的向量,您可以使用更通用的方法:
def toTuple(seq: Seq[_]): Product = {
val clz = Class.forName("scala.Tuple" + seq.size)
clz.getConstructors()(0).newInstance(seq.map(_.asInstanceOf[AnyRef]): _*).asInstanceOf[Product]
}
vector.map(toTuple).toList
但它有限制:向量的最大长度为 22。
【讨论】:
Tuple3s?
Tuple3。我同意你的观点,可变大小的向量需要更通用的解决方案。