2

この質問の以前のバージョンでは要点がつかめなかったので、要約してみました。

Futureのmap関数は、以下に示すように ExecutionContext を取ります ( API 2.10.3から取得) 。

def map[S](f: (T) ⇒ S)(implicit executor: ExecutionContext): Future[S] 

自分の ExecutionContext を渡したいのですが、成功しません。構文が正しくないようです。

ExecutionContext を Future のマップ関数に渡すにはどうすればよいですか?

私が持っているものは次のとおりです。

val executorService  = Executors.newFixedThreadPool(9)
val executionContext = ExecutionContext.fromExecutorService(executorService)

def myFunction(mt : MyType): Unit = println("my function")
def getSomeFuture()(executor: ExecutionContext): Future[MyType] = {..}

// function is served by my execution context. A Future is returned.
val f = getSomeFuture()(executionContext)

// compiles if I provide the standard global execution context - sth. I do NOT want
f map (myFunction)

// does not compile
f map (myFunction)(executionContext)

// does not compile
f map (item => println("sth."))(executionContext)
4

2 に答える 2

2

参考までに、メソッド呼び出しにスペース構文を使用する場合は、式の最初の部分全体を括弧で囲む必要があります。

(f map myFunction)(executionContext)

そうしないと、コンパイラは、 が返す関数の代わりにexecutionContextを渡そうとしていると判断します。myFunctionf map myFunction

于 2013-12-05T09:37:14.693 に答える