Scala类型参数化,Shapeless - 找不到参数Generic的隐式值

时间:2017-03-15 09:55:05

标签: scala shapeless

我无法使用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) 

我有什么遗漏的吗?

1 个答案:

答案 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