6

できる限り新しいマクロ構文を使用するようにビルドをアップグレードしていますが、flatMap対処方法がわからない に遭遇しました。

次の形式のタスクがあったとしましょう

myTask <<= (foo, bar) flatMap { (x, y) => someFunctionProducingATask(x, y, 5) }

現在、Def.taskDyn漠然と有望に見えますが、完全には適合しません。それを素朴なものに翻訳してもうまくいきません:

myTask <<= Def.taskDyn {
  val x = foo.value
  val y = bar.value
  someFunctionProducingATask(x, y, 5) // ERROR: we need an Initialize[Task[...]], but have a Task[...]
}

Initializeは単調に感じますが、そのための を見つけることができないので、pure自分のタスクをそれに入れる方法、またはそれが望ましいかどうかさえわかりません。ドキュメントは、私が使用することを提案する以外に何も言っていないようですtaskDyn。ここで何かアイデアはありますか?

4

1 に答える 1

4

ほとんどのユーザー向けドキュメントでは、"task"は を意味しInitialize[Task[T]]ます。"task"ビルドやプラグインが通常それらを使用するのは、実際には値がタスクである設定です。

someFunctionProducatATaskおそらく を返すはずInitialize[Task[T]]です。

pureforInitializeDef.value(accepts => T) またはDef.pure(accepts () => T) です。

ただし、通常はDef.task(for Initialize[Task[T]]) とDef.setting(for を使用します。これらは、 、、およびInitialize[T]への引数と同じ構文を使用できます。:=+=++=

于 2013-07-28T00:34:29.847 に答える