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
在你的例子中,它所做的是根据分配给 liquibaseChangelog
和 liquibaseDatabase
的值定义 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 很方便——它是一个尊重 <<=
等特殊字符的搜索引擎
我看到声明的变量
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在你的例子中,它所做的是根据分配给 liquibaseChangelog
和 liquibaseDatabase
的值定义 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 很方便——它是一个尊重 <<=