我无法使用scala类型参数化函数实现shapeless.Generic。在下面的代码中,我收到错误“无法找到参数gen的隐含值:shapeless.Generic [T]”。
def foo[T](instance: T) = {
val gen = shapeless.Generic[T] //getting error in this line!!!
val values = gen.to(instance)
println(values)
}
case class Bar(x:String, y:String)
var bar = Bar("a","b")
foo(bar)
我有什么遗漏的吗?
答案 0 :(得分:3)
def foo[T, HL <: HList](instance: T)(
implicit gen: Generic.Aux[T, HL]
) = {
val values = gen to instance
println(values)
}
case class Bar(x: String, y: String)
您通常需要使用Aux
模式,泛型是宏实现的,但会产生一个任意类型,它作为抽象类型成员公开。如果您还不了解此处的所有字词,请阅读更多here。