通常、最初に a を書き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")
}
object FooWorker
しかし、それが機能する前に宣言するcase class FooWorker
と。テストには Scala 2.11.6 と SBT を使用しています。どうもありがとう!