gpt4 book ai didi

scala - sbt 0.13 任务宏相当于 flatMap

转载 作者:行者123 更新时间:2023-12-04 15:23:37 24 4
gpt4 key购买 nike

我正在升级我的构建以尽可能多地使用新的宏语法,但我遇到了 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 之外,文档似乎没有说什么。 .任何人有任何想法吗?

最佳答案

在大多数面向用户的文档中,"task"意味着 Initialize[Task[T]] .一个 "task"因为构建和插件通常使用它们实际上是一个设置,其值是一个任务。
someFunctionProducatATask可能应该返回 Initialize[Task[T]] .
pureInitializeDef.value (接受 => T)或 Def.pure (接受 () => T )。

但是,通常只需使用 Def.task (对于 Initialize[Task[T]])和 Def.setting (对于 Initialize[T] 。这些允许与 :=+=++= 的参数相同的语法。

关于scala - sbt 0.13 任务宏相当于 flatMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17888316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com