我读了sbt document,发现还有我从来没有使用一些特殊的方法:build.sbt中`?`,````,`<++ =`,`<+ =`的例子?
?
??
<++=
<+=
我在哪里可以找到他们的任何例子吗?
我读了sbt document,发现还有我从来没有使用一些特殊的方法:build.sbt中`?`,````,`<++ =`,`<+ =`的例子?
?
??
<++=
<+=
我在哪里可以找到他们的任何例子吗?
SBT 0.13做得很好消除这些运营商的需求,并简化构建定义:=
,+=
和++=
与宏的帮助和特殊的“提取” .value
。所以不再需要这些操作员。我仍在使用的唯一的事情是~=
是你可以应用一些功能的一些设置的值,但它也可以与:=
和.value
在你的问题来表达,我觉得你混合两组操作 - 一个与<+=
和<++=
这是或即将赞成:=
,+=
和++=
被“弃用”,而另一个与?
和??
这不幸不经常使用,因为所有可以:=
,+=
表达和++=
(人们经常发现使用3足够他们的u se案件)。
阅读关于More operations的sbt官方文档约?
和??
。
至于例子:
?
lazy val unintiedKey = settingKey[String]("Unitialized key")
lazy val someKey = settingKey[String]("Key to check the value of another")
someKey := unintiedKey.?.value getOrElse "new value"
那你认为是要与show someKey
鉴于上述build.sbt
打印出来?
> show someKey
[info] new value
当您添加下面的build.sbt
有uninitedKey
设置初始化:
unintiedKey := "Another value"
someKey
变化,太:
> show unintiedKey
[info] Another value
> show someKey
[info] Another value
??
让我们定义一个BUIL d具有以下build.sbt
:
lazy val unintiedKey = settingKey[String]("Unitialized key")
lazy val someKey = settingKey[String]("Key to check the value of another")
someKey := (unintiedKey ?? "uninitedKey had no value").value
你猜怎么的someKey
值将是?
> show someKey
[info] uninitedKey had no value
了解操作(即补sbt.SettingKey API)的关键是要了解一个设置在SBT什么 - 这是一对关键的和被转化成可用的设置初始化当一个范围被应用到它。