Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Shapeless:有没有办法从case类或元组中获取Hlist类型_Scala_Tuples_Shapeless - Fatal编程技术网

Scala Shapeless:有没有办法从case类或元组中获取Hlist类型

Scala Shapeless:有没有办法从case类或元组中获取Hlist类型,scala,tuples,shapeless,Scala,Tuples,Shapeless,我对“不成形”是完全陌生的。我从列表中创建一个案例类,如下所示: val list = Seq(Some(1), Some(1.0), ...) val y = list .toHList[Option[Int]::Option[Double]::Option[Int]::Option[Double]::Option[Double]::Option[Double]::Option[Double]::Option[Double]::Option[Double]::Option[Doub

我对“不成形”是完全陌生的。我从列表中创建一个案例类,如下所示:

val list = Seq(Some(1), Some(1.0), ...)
val y =
  list
    .toHList[Option[Int]::Option[Double]::Option[Int]::Option[Double]::Option[Double]::Option[Double]::Option[Double]::Option[Double]::Option[Double]::Option[Double]::Option[Double]::Option[Double]::Option[Double]::Option[Double]::HNil]

val z = y.get.tupled
val aa = YieldVariables.tupled(z)
它工作得很好,但我想知道是否有办法不在
toHList[此处]
部分中编写所有这些类型

因此,我想知道是否存在类似于
list.toHList[自己查找类型]
list.getTypesForHlist
或MyCaseClass.getTypesForHlist这样的东西,它们会导致
选项[Int]::选项[Double]…

对于case类(和元组,它们也是case类!),请使用
泛型

case class A(i: Int, s: String)
shapeless.Generic[A].to(A(1, "")) // Int :: String :: HNil
这在
Seq
上无法执行。事实上,一旦调用了构造函数,从类型角度看,关于传递给该构造函数的元素数量的信息就消失了。Shapeless还有
SingletonProductArgs
:类似varargs语法的宏,返回
HList
而不是
Seq