Scala 集合兼容库教程
scala-collection-compatmakes some Scala 2.13 APIs (primarily collections, also some others) available on 2.11 and 2.12, to aid cross-building项目地址:https://gitcode.com/gh_mirrors/sc/scala-collection-compat
项目介绍
Scala 集合兼容库(scala-collection-compat)是一个开源项目,旨在使 Scala 2.13 和 Scala 3 的一些 API(主要是集合,也有其他部分)在 Scala 2.11 和 2.12 上可用,以促进跨版本构建。尽管该库最初名为 scala-collection-compat,但其范围已扩展到包括 Scala 2.13/3 标准库的其他部分,而不仅仅是集合。目前,仅支持最常用的 API,许多功能仍缺失,欢迎贡献。
项目快速启动
安装
要在项目中使用 scala-collection-compat 库,请在 build.sbt
文件中添加以下依赖:
libraryDependencies += "org.scala-lang.modules" %% "scala-collection-compat" % "<version>"
请将 <version>
替换为所需的版本号。
示例代码
以下是一个简单的示例,展示了如何在 Scala 2.12 和 2.11 中使用 Scala 2.13 的集合 API:
import scala.collection.compat._
val xs = List(1, 2, 3)
val ys = xs.to(List) // 在 Scala 2.13 中,to 方法接受一个值参数
应用案例和最佳实践
跨版本构建
假设你有一个库需要支持 Scala 2.11、2.12 和 2.13。使用 scala-collection-compat 库可以简化跨版本构建的过程。例如,你可以编写如下代码:
import scala.collection.compat._
def process(xs: Iterable[Int]): List[Int] = {
xs.to(List)
}
这段代码在 Scala 2.11 和 2.12 中将使用 scala-collection-compat 库提供的兼容性代码,而在 Scala 2.13 中将直接使用标准库的实现。
避免未使用的导入警告
在 Scala 2.13 中,有时不需要导入 scala.collection.compat._
,这会导致未使用的导入警告。为了避免这种情况,可以在 SBT 中添加以下编译器选项:
scalacOptions += "-Wconf:origin=scala.collection.compat.*:s"
典型生态项目
Scalafix
Scalafix 是一个用于 Scala 代码重构和 linting 的工具。scala-collection-compat 项目提供了一些 Scalafix 规则,帮助开发者将代码迁移到新的集合 API。例如,可以使用以下命令启用 Collection213CrossCompat 重写规则:
// build.sbt
libraryDependencies += "org.scala-lang.modules" %% "scala-collection-compat" % "<version>"
scalacOptions += "-P:semanticdb:synthetics:on"
// sbt shell
> scalafixEnable
> scalafixAll dependency:Collection213CrossCompat@org.scala-lang.modules:scala-collection-migrations:<version>"
Scala 标准库
scala-collection-compat 项目与 Scala 标准库紧密相关,它提供了一些在 Scala 2.13 中引入的新集合类型(如 immutable.ArraySeq
和 immutable.LazyList
)的向后移植版本,使得这些类型在 Scala 2.11 和 2.12 中也可用。
通过以上内容,你应该能够快速上手并使用 scala-collection-compat 库,同时了解其在实际项目中的应用和最佳实践。
scala-collection-compatmakes some Scala 2.13 APIs (primarily collections, also some others) available on 2.11 and 2.12, to aid cross-building项目地址:https://gitcode.com/gh_mirrors/sc/scala-collection-compat