2

通常、最初に 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 を使用しています。どうもありがとう!

4

2 に答える 2

2

これは未解決のバグです。

https://issues.scala-lang.org/browse/SI-5197 (および関連/重複の問題)を参照してください。

于 2015-08-20T14:41:08.140 に答える