【发布时间】:2015-11-13 09:48:34
【问题描述】:
通常,我首先在同一个文件中写一个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 进行测试。非常感谢!
【问题讨论】:
-
@TravisBrown 我没有使用 REPL。我有一个 sbt 项目,里面有一个
Main.scala文件和一个简单的驱动程序来测试它。我直接从控制台运行它(即sbt run)。
标签: scala implicit case-class companion-object context-bound