我正在升级我的构建以尽可能多地使用新的宏语法,我遇到了一个flatMap我不知道如何处理的问题.
假设我曾经有过以下形式的任务
myTask <<= (foo, bar) flatMap { (x, y) => someFunctionProducingATask(x, y, 5) }
Run Code Online (Sandbox Code Playgroud)
现在,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[...]
}
Run Code Online (Sandbox Code Playgroud)
Initialize感觉monadic但我找不到pure它,所以我不知道如何把我的任务放入其中,或者如果这甚至是可取的.除了暗示我使用之外,文档似乎没有说什么taskDyn.有人有任何想法吗?
在大多数面向用户的文档中,"task"意味着Initialize[Task[T]]. 构建"task"和插件通常使用它们实际上是一个其值是任务的设置。
应该someFunctionProducatATask会返回Initialize[Task[T]]。
pureforInitialize是Def.value(接受=> T)或Def.pure(接受() => T)。
但是,通常只使用Def.task(for Initialize[Task[T]]) 和Def.setting(for Initialize[T]。它们允许与:=、+=和 的参数使用相同的语法++=。
| 归档时间: |
|
| 查看次数: |
416 次 |
| 最近记录: |