在 main 方法中使用时找不到隐式
Could not find implicit when used in main method
我有类似于以下摘录的代码:
object Obj {
case class Dog(colour: String= "brown")
def summon(dog: Dog = Dog()): Dog = dog
def getColour(implicit d: Dog): String = d.colour
def main(args: Array[String]): Unit = {
implicit val dog = summon(Dog(colour = "orange"))
val colour = getColour
}
}
这不会编译,因为编译器在调用 getColour
时找不到参数 d
的隐式狗。但奇怪的是,如果我尝试将 getColour
的结果分配给一个名为 colour
以外的 val,它会起作用。此外,如果我将 2 行从 main
方法中移出,它也能正常工作。有什么想法导致隐式解析在这里失败吗?
我正在使用 Scala 版本 2.12.6。
如果我们像这样删除 implicit
def main(args: Array[String]): Unit = {
val dog = summon(Dog(colour = "orange"))
val colour = getColour(dog) // error: recursive value dog needs type
}
我们得到 recursive value dog needs type
,所以我相信这是
的一个实例
我有类似于以下摘录的代码:
object Obj {
case class Dog(colour: String= "brown")
def summon(dog: Dog = Dog()): Dog = dog
def getColour(implicit d: Dog): String = d.colour
def main(args: Array[String]): Unit = {
implicit val dog = summon(Dog(colour = "orange"))
val colour = getColour
}
}
这不会编译,因为编译器在调用 getColour
时找不到参数 d
的隐式狗。但奇怪的是,如果我尝试将 getColour
的结果分配给一个名为 colour
以外的 val,它会起作用。此外,如果我将 2 行从 main
方法中移出,它也能正常工作。有什么想法导致隐式解析在这里失败吗?
我正在使用 Scala 版本 2.12.6。
如果我们像这样删除 implicit
def main(args: Array[String]): Unit = {
val dog = summon(Dog(colour = "orange"))
val colour = getColour(dog) // error: recursive value dog needs type
}
我们得到 recursive value dog needs type
,所以我相信这是