什么语法糖<< =在Scala中意味着什么?

时间:2015-04-20 11:13:09

标签: scala sbt

我看到变量声明

lazy val liquibase = TaskKey[Liquibase]("liquibase", "liquibase object")

然后我在下面看到

liquibase <<= ( liquibaseChangelog, liquibaseDatabase ) map {
    ( cLog :String, dBase :Database ) =>
      new Liquibase( cLog, new FileSystemResourceAccessor, dBase )
  }

看起来它正在为TaskKey添加功能?

1 个答案:

答案 0 :(得分:6)

在Scala中它没有任何意义,它是由sbt定义的DSL。

在您的情况下,它所做的是根据分配给liquibaseliquibaseChangelog的值来定义liquibaseDatabase,从而添加对它们的依赖。有关更多详细信息,请参阅"Computing a value based on other keys' values"


另外,从sbt 0.13开始,你可以用更好,更清晰的方式写出来:

liquibase := {
  val fs = new FileSystemResourceAccessor
  new Liquibase(liquibaseChangelog.value, fs, liquibaseDatabase.value)
}

作为旁注,您可能会发现SymbolHound方便 - 它是一个尊重<<=

等特殊字符的搜索引擎