7

Scala 2.12 では、global実行コンテキストをインポートしてからスコープ内で別の暗黙的な実行コンテキストを定義すると、あいまいな暗黙的な結果になりますが、2.11 では問題なく動作します。

import scala.concurrent._
import scala.concurrent.ExecutionContext.Implicits.global

class A(implicit ec: ExecutionContext) {
  x = implicitly[ExecutionContext]
}

コンパイラはエラーを出します:

error: ambiguous implicit values:
 both lazy value global in object Implicits of type => scala.concurrent.ExecutionContext
 and value ec in class A of type scala.concurrent.ExecutionContext
 match expected type scala.concurrent.ExecutionContext
       val x = implicitly[ExecutionContext]
                         ^

これの原因と、コードで回避する方法を教えてください。

4

1 に答える 1