Scala 中的语法糖 <<= 是什么意思?

What does the syntactic sugar <<= mean in Scala?

我看到声明的变量

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

然后我在下面看到这个

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

它看起来像是为 TaskKey 添加了功能?

在 Scala 中它没有任何意义,它是由 sbt.

定义的 DSL

在你的例子中,它所做的是根据分配给 liquibaseChangelogliquibaseDatabase 的值定义 liquibase,因此添加对它们的依赖。有关详细信息,请参阅 "Computing a value based on other keys' values"


此外,从 sbt 0.13 开始,您可以用更好、更清晰的方式编写它:

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

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

等特殊字符的搜索引擎