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

Scala type parameterization, Shapeless - could not find implicit value for parameter Generic

我无法使用 scala 类型参数化函数实现 shapeless.Generic。在下面的代码中,出现错误 "could not find implicit value for parameter 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) 

有什么我遗漏的吗?

  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