Scala 在定义case类的方法中找不到无形状隐式val LabelledGeneric

Scala 在定义case类的方法中找不到无形状隐式val LabelledGeneric,scala,shapeless,Scala,Shapeless,我刚刚发现一个关于不成形镜头的有趣问题,下面是代码: case class Person(name : String, age : Int) val nameLens = lens[Person] >> 'name (1) :如果我在扩展应用程序的对象中定义它,则它正在工作 object mainLensSpec extends App { import shapeless._ case class Person(name : String, age : Int

我刚刚发现一个关于不成形镜头的有趣问题,下面是代码:

case class Person(name : String, age : Int)
val nameLens     = lens[Person] >> 'name
(1) :如果我在扩展应用程序的对象中定义它,则它正在工作

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]>'name

但是,如果我将definitioncase类Person移出方法,它将再次工作

  object mainLensSpec {
    import shapeless._
    case class Person(name : String, age : Int)

    def main(args: Array[String]) {
        val nameLens     = lens[Person] >> 'name
    }
我的问题是

(1) 。为什么隐式值不在范围内,如果案例类在与lens相同的方法中定义

(2) 当shapeless要创建LabelledGeneric[Person]并注入到Lens中定义的>>方法中时


事先多谢,lens功能强大,不会让我感到困惑。

我敢肯定这是Scala编译器的错误。我在bug数据库中找不到与您目前看到的问题完全匹配的错误,但感觉它可能是一个相对的错误