Sim*_*mon 4 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[Double]::Option[Double]::Option[Double]::Option[Double]::Option[Double]::HNil]
val z = y.get.tupled
val aa = YieldVariables.tupled(z)
Run Code Online (Sandbox Code Playgroud)
它运行良好,但我想知道是否有办法不在部件中写入所有这些类型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
Run Code Online (Sandbox Code Playgroud)
这在 上是不可能的Seq。实际上,一旦您调用了构造函数,从类型的角度来看,有关您传递给该构造函数的元素数量的信息就消失了。Shapeless 也有SingletonProductArgs: 一个宏,用于类似 varargs 的语法,返回 anHList而不是 a Seq。
| 归档时间: |
|
| 查看次数: |
964 次 |
| 最近记录: |