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数据库中找不到与您目前看到的问题完全匹配的错误,但感觉它可能是一个相对的错误