0
考虑以下几点:斯卡拉:将一个密封特征实例到HList
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
直到运行时间。
谢谢!这与'toHlist(data1(23,13))'一起工作,但如果我们所有的都是一个指向基本特征的指针:'val data:baseData = data1(23,13)','toHlist(data )'。在我的情况下,我不知道哪个case类要传入,直到运行时。那里有任何想法? –
你能否根据以上更新你的问题? –
见上文。谢谢! –