【发布时间】:2013-01-21 06:49:54
【问题描述】:
如何将(例如)3 个元素的列表转换为大小为 3 的元组?
例如,假设我有val x = List(1, 2, 3),我想将其转换为(1, 2, 3)。我该怎么做?
【问题讨论】:
-
这是不可能的(除了“手工”)AFAIK。给定
def toTuple(x: List[Int]): R,R的类型应该是什么? -
如果不需要对任意大小的元组执行此操作(即像上面介绍的假设方法),请考虑
x match { case a :: b :: c :: Nil => (a, b, c); case _ => (0, 0, 0) }并注意生成的类型固定为Tuple3[Int,Int,Int]跨度> -
虽然
List无法实现您想要做的事情,但您可以查看Shapeless 的HList类型,它允许在元组之间进行转换(github.com/milessabin/…)。也许它适用于您的用例。