gpt4 book ai didi

scala - 在 main 方法中使用时找不到隐式

转载 作者:行者123 更新时间:2023-12-01 01:44:46 25 4
gpt4 key购买 nike

我有类似于以下摘录的代码:

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
}
}

这不会编译,因为编译器找不到参数 d 的隐式狗打电话时 getColour .奇怪的是,如果我尝试分配 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 ,所以我相信这是一个实例

https://issues.scala-lang.org/browse/SI-5091

关于scala - 在 main 方法中使用时找不到隐式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50899039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com