我有兴趣弄清楚sbt.TaskKeyor的一些sbt.SettingKey操作
<<=
<+=
<++=
Run Code Online (Sandbox Code Playgroud)
我知道主网站的文档部分中有很多示例和文档,但我没有找到任何帮助。这是我看的地方:
http://www.scala-sbt.org/release/docs/Getting-Started/More-About-Settings.html
http://www.scala-sbt.org/release/api/index.html#sbt.TaskKey
http://www.scala-sbt.org/release/api/index.html#sbt.SettingKey
如果您想了解<<=-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 使用宏来扩展 的 rhs:=来生成上面的内容:
jarName in assembly := {
name.value + "-assembly-" + version.value + ".jar"
}
Run Code Online (Sandbox Code Playgroud)
:=让你思考T,所以更容易处理。
| 归档时间: |
|
| 查看次数: |
421 次 |
| 最近记录: |