我发现无形镜头有一个有趣的问题,这是代码:
case class Person(name : String, age : Int)
val nameLens = lens[Person] >> 'name
(1):如果我在扩展App的对象中定义它,它就可以了。
object mainLensSpec extends App {
import shapeless._
case class Person(name : String, age : Int)
val nameLens = lens[Person] >> 'name
}
(2)。如果我在main方法中定义它,它就不起作用。
object mainLensSpec {
def main(args: Array[String]) {
import shapeless._
case class Person(name : String, age : Int)
val nameLens = lens[Person] >> 'name
}
错误讯息: 找不到shapeless类型的证据参数的隐含值.LabelledGeneric [Person] {type Repr = Out0} val nameLens = lens [Person]>> “名称
但是,如果我将定义案例类Person移出方法,它会再次运行!
object mainLensSpec {
import shapeless._
case class Person(name : String, age : Int)
def main(args: Array[String]) {
val nameLens = lens[Person] >> 'name
}
我的问题是
(1)。如果使用镜头在同一方法中定义的case类,隐含值不在范围内。
(2)当无形将要创建LabelledGeneric [Person]并注入>> Lens中定义的方法。
很多很多人都提前感谢,镜头很强大,对我来说很困惑。