我有下一个代码
trait A { val id: Int }
case class B(id: Int) extends A
case class C(id: Int, name: String) extends A
我想为所有类层次结构定义公共镜头:
import shapeless._
import lens._
val idLens = lens[A] >> 'id
但我收到错误:could not find implicit value for parameter mkLens: shapeless.MkFieldLens[A,Symbol with shapeless.tag.Tagged[String("id")]]
是否可以为trait A
的所有儿童定义镜头?
答案 0 :(得分:3)
shapeless不提供从finally
到A
的隐式转换。您可以定义Record
以提供相应的记录类型转换:
LabelledGeneric[A]