scala – sbt 0.13任务宏等效于flatMap
发布时间:2020-12-16 18:51:11 所属栏目:安全 来源:网络整理
导读:我正在升级我的构建以尽可能多地使用新的宏语法,我遇到了一个我不知道如何处理的flatMap. 假设我曾经有过以下形式的任务 myTask = (foo,bar) flatMap { (x,y) = someFunctionProducingATask(x,y,5) } 现在,Def.taskDyn看起来很模糊,但不太适合.将它翻译成天
我正在升级我的构建以尽可能多地使用新的宏语法,我遇到了一个我不知道如何处理的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,5) // ERROR: we need an Initialize[Task[...]],but have a Task[...] } 初始化感觉monadic但我找不到纯粹的,所以我不知道如何将我的任务放入其中,或者如果这甚至是可取的.除了建议我使用taskDyn之外,文档似乎没有说什么.有人有任何想法吗? 解决方法
在大多数面向用户的文档中,“任务”表示初始化[任务[T]].构建和插件通常使用它们的“任务”实际上是一个值为任务的设置.
someFunctionProducatATask应该返回Initialize [Task [T]]. pure for Initialize是Def.value(accepted => T)或Def.pure(accepted()=> T). 但是,通常只使用Def.task(用于Initialize [Task [T]])和Def.setting(用于Initialize [T].这些允许使用与参数相同的语法:=,=和=. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |