加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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].这些允许使用与参数相同的语法:=,=和=.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读