Eug*_*ota 5

sbt 0.12 语法

如果您想了解<<=-family 运算符,最好的地方是 sbt 0.12.1 版本的入门指南,特别是您链接的更多种类设置页面有一个名为“基于其他键计算值”的部分值:<<=

~=根据键先前关联的值定义新值。但是如果您想根据其他键的值定义一个值怎么办?

  • <<=允许您使用任意其他键的值来计算新值。

<<=有一个参数,类型为Initialize[T]。实例Initialize[T]是一种计算,它将与一组键关联的值作为输入,并返回T基于这些其他值的类型的值。它初始化一个类型的值T

给定 an Initialize[T],当然<<=返回 a (就像, ,等)。Setting[T]:=+=~=

正如文档中所述,<<=让您根据 进行思考Initialize[T],因此如果您想从多个键中提取值并以某种方式组合它,您需要执行以下操作:

jarName in assembly <<= (name, version) map { (n, v) =>
  n + "-assembly-" + v + ".jar" }
Run Code Online (Sandbox Code Playgroud)

此时您必须以某种方式知道这jarName不是TaskKeya SettingKey

sbt 0.13 语法

<<=您在最新的入门指南中没有找到的原因是 sbt 0.13 语法<<=已过时。所有你需要的是:=。sbt 使用宏来扩展 的 rhs:=来生成上面的内容:

jarName in assembly := {
  name.value + "-assembly-" + version.value + ".jar"
} 
Run Code Online (Sandbox Code Playgroud)

:=让你思考T,所以更容易处理。