2014-09-13 48 views

回答

7

SBT 0.13做得很好消除这些运营商的需求,并简化构建定义:=+=++=与宏的帮助和特殊的“提取” .value。所以不再需要这些操作员。我仍在使用的唯一的事情是~=是你可以应用一些功能的一些设置的值,但它也可以与:=.value

3

在你的问题来表达,我觉得你混合两组操作 - 一个与<+=<++=这是或即将赞成:=+=++=被“弃用”,而另一个与???不幸不经常使用,因为所有可以:=+=表达和++=(人们经常发现使用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.sbtuninitedKey设置初始化:

    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什么 - 这是一对关键的和被转化成可用的设置初始化当一个范围被应用到它。

相关问题