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

scala – SBT,<< =和:=之间的区别

发布时间:2020-12-16 10:04:34 所属栏目:安全 来源:网络整理
导读:这些方法 are not described in the documentation.我主要使用:=在我的.sbt文件中,但有时候,由于我还不了解的原因,我指定的任务:=不起作用(意味着任务不会产生副作用,不要返回任何内容),并使用 =.那么 =和:=之间的区别是什么? 编辑: 我的下面的例子运行
这些方法 are not described in the documentation.我主要使用:=在我的.sbt文件中,但有时候,由于我还不了解的原因,我指定的任务:=不起作用(意味着任务不会产生副作用,不要返回任何内容),并使用<< =.那么<< =和:=之间的区别是什么? 编辑: 我的下面的例子运行一个清理任务,当它完成(doFinally)时,同时运行另外两个任务.

gae_prep_war := {
  val after = Def.task {
    (gae_copyJars).value; (compile in Compile).value;
  }
  (gae_clean,after) {
    (clean,task) => clean doFinally task
  }
}

因为它现在不起作用,没有错误,但也没有效果或输出;如果我改变:= to<< =它可以工作.我的SBT版本是0.13.0并使用Scala 2.10.2. EDIT2: 我发现:=如果我只是将.value附加到外部表达式:

gae_prep_war := {
  val after = Def.task {
    (gae_copyJars).value; (compile in Compile).value;
  }
  (gae_clean,task) => clean doFinally task
  }
}.value

  ^

但我还是不太明白为什么……

解决方法

在sbt 0.13中,<< =已过时.当任务定义引入了对其他任务的依赖时,它被使用 - 它允许您提取其他任务的结果.以下是0.12.4文档: http://www.scala-sbt.org/0.12.4/docs/Getting-Started/More-About-Settings.html#computing-a-value-based-on-other-keys-values

在0.13中你可以使用:= always,所以你可以在这里看到文档如何在0.13中变化:http://www.scala-sbt.org/0.13.1/docs/Getting-Started/More-About-Settings.html#computing-a-value-based-on-other-keys-values

因此,对于0.13及以上,可以安全地忘记<< =. 如果上面的文档链接没有意义,可能有助于回到入门指南的开头并阅读以获得背景.

(编辑:李大同)

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

    推荐文章
      热点阅读