用于基本特性的无形定义镜头

时间:2015-09-29 18:58:22

标签: scala shapeless

我有下一个代码

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的所有儿童定义镜头?

1 个答案:

答案 0 :(得分:3)

shapeless不提供从finallyA的隐式转换。您可以定义Record以提供相应的记录类型转换:

LabelledGeneric[A]