gpt4 book ai didi

scala - 案例类和同伴的不同顺序的隐式解析

转载 作者:行者123 更新时间:2023-12-02 05:41:23 24 4
gpt4 key购买 nike

通常,我会先写一个case class,然后在同一个文件中写伴随的object,就在下面。但是,当尝试导入在同伴中声明的 implicit 时,我不得不改变声明的顺序(显然我不想)。克服这种情况的推荐做法是什么?

对于具体情况,以下代码不起作用:

  object SomeLib {
def doSomething[T : List](t: T) = "meh"
}

case class FooWorker(x: String) {
import FooWorker._ // bring the implicit in scope for doSomething
def then(event: String) : FooWorker = {
copy(x = SomeLib.doSomething(event)) // requires implicit
}
}

object FooWorker {
implicit val list = List("a", "b", "c")
}

但是如果我在 case class FooWorker 之前声明 object FooWorker 它确实有效。我正在使用 Scala 2.11.6 和 SBT 进行测试。非常感谢!

最佳答案

问题源于隐式 FooWorker.list 没有明确声明的类型。如果您完成以下行:

implicit val list: List[String] = List("a", "b", "c")

无论声明的顺序如何,一切都按预期工作。通常,您应该始终为隐式值指定显式类型。此规则将在 Scala 的 future 版本中强制执行。

关于scala - 案例类和同伴的不同顺序的隐式解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32106609/

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