无形:是否有一种方法可以从案例类或元组中获取HLIST类型



我是无形的新手。我从列表中创建一个案例类,如下:

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[Here]部分中的所有这些类型。

所以我想知道是否存在 list.toHList[find the type yourself]list.getTypesForHlist之类的东西,或者 MyCaseClass.getTypesForHlist是否存在 Option[Int]::Option[Double]...

对于案例类(和元组,这些也是案例类!(,使用 Generic

case class A(i: Int, s: String)
shapeless.Generic[A].to(A(1, "")) // Int :: String :: HNil

这是在Seq上无法做到的。的确,一旦您称之为构造函数,有关您传递给该构造函数多少元素的信息从类型的角度就消失了。无形的也具有SingletonProductArgs:返回HList而不是Seq的语法等varargs的宏。

最新更新