【发布时间】:2016-07-21 07:35:10
【问题描述】:
考虑以下几点:
sealed trait baseData {
def weight: Int
def priority: Int
}
case class data1(override val weight: Int, override val priority: Int) extends baseData
如何定义具有以下签名的函数,将data1 转换为 HList?
def toHlist[A <: baseData] (data: A) = {}
我想将一个特征实例传递给toHlist 函数而不是实际的案例类,因为将有多个案例类扩展该特征。我也不想硬编码任何字段;我正在寻找一个完全通用的解决方案。
我确信使用 Shapeless 库可以做到这一点,但无法弄清楚如何。
编辑
toHList 需要能够处理指向案例类实例的baseData 指针,如下所示:
val data: baseData = data1(1,2)
toHlist(data)
这样做的原因是,我们将拥有多个扩展 baseData 的案例类,现在我们将知道在运行之前将哪一个传递给 toHlist。
【问题讨论】: