案例类类型为

时间:2016-08-20 06:56:08

标签: scala shapeless traits

我最近发现了Shapeless,我想知道是否可以用它做以下事情。让我们说我有这个密封的特质和案例类:

sealed trait T

case class C1() extends T
case class C2() extends T

我定义了这种形式的可扩展记录:

val myRecords = (C1 ->> SomeObj1) :: (C2 ->> SomeObj2) :: HNil

但是,如果我有val x = C1(),我如何从SomeObj1中获取myRecords

我不想在这里进行模式匹配,我想保留SomeObj1SomeObj2的类型信息。

另一个问题是,如何强制用户将trait T扩展到另一个案例类,以便将相应的记录添加到myRecords

1 个答案:

答案 0 :(得分:0)

您只需使用, 10上预定义的apply方法。

myRecords