2014-09-13 87 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什麼 - 這是一對關鍵的和被轉化成可用的設置初始化當一個範圍被應用到它。

相關問題