我有兴趣了解sbt.TaskKey
或sbt.SettingKey
的某些操作
<<=
<+=
<++=
我知道主网站的文档部分有很多示例和文档,但我没有找到任何帮助。这是我看的地方:
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
答案 0 :(得分:4)
如果您想了解<<=
- 运营商的家庭,最好去的地方是入门指南的sbt 0.12.1版本,特别是您链接的页面更多种类的设置有一个部分叫做Computing a value based on other keys' values: <<=
~=
根据密钥的先前关联值定义新值。但是如果你想根据其他键的值来定义一个值呢?
<<=
允许您使用任意其他键的值计算新值。
<<=
有一个Initialize[T]
类型的参数。Initialize[T]
实例是一种计算,它将与一组键关联的值作为输入,并根据这些其他值返回类型T
的值。它初始化了T
类型的值。给定
Initialize[T]
,<<=
当然会返回Setting[T]
(就像:=
,+=
,~=
等。)
如文档中所述,<<=
会让您根据Initialize[T]
进行思考,因此如果您想从多个键中提取值并以某种方式构建它,则需要执行此操作类似的东西:
jarName in assembly <<= (name, version) map { (n, v) =>
n + "-assembly-" + v + ".jar" }
此时您必须知道jarName
是TaskKey
而不是SettingKey
。
您在最新的“入门指南”中未找到<<=
的原因是sbt 0.13语法使<<=
过时了。您所需要的只是:=
。 sbt使用宏来扩展:=
的rhs以生成以上内容:
jarName in assembly := {
name.value + "-assembly-" + version.value + ".jar"
}
:=
可让您在T
中思考,因此处理起来更容易。