【发布时间】:2016-07-20 12:58:16
【问题描述】:
我试图从来自另一个 HList(确切地说是另一个 LabelledGeneric)的标记类型中获取一个 LabelledGeneric 实例,但编译器给我一个错误,说它找不到隐式。
确切的错误是(启用-x-log-implicits):
shapeless.this.DefaultSymbolicLabelling.mkDefaultSymbolicLabelling is not a valid implicit value for shapeless.DefaultSymbolicLabelling.Aux[Inner with shapeless.labelled.KeyTag[Symbol with shapeless.tag.Tagged[String("c")],Inner],K] because:
hasMatchingSymbol reported error: Inner with shapeless.labelled.KeyTag[Symbol with shapeless.tag.Tagged[String("c")],Inner] is not case class like or the root of a sealed family of types
这是sn-p:
case class Inner(a: Int)
case class Outer(b: Int, c: Inner)
val gen = LabelledGeneric[Outer]
val inner = Inner(1)
val outer = Outer(2, inner)
def getGen[A, L](x: A)(implicit gen: LabelledGeneric.Aux[A, L]) = gen
val hOuter = gen.to(outer)
getGen(hOuter.at(1))
我在这里遗漏了什么明显的东西吗?
谢谢。
编辑:
我添加了案例类的定义。我也在使用 scala 2.11.8 和 shapeless 2.3.0
【问题讨论】:
-
您能否包括
Outer和Inner的定义,并说明您正在使用哪些版本的shapeless 和scalac。 -
我已将它们添加到问题中
标签: scala generic-programming shapeless