Scala 3是否有专属标准库?集合与重实现相关技术问询
Scala 3标准库相关问题解答
1. Scala 3是否完全使用Scala 2标准库的所有集合?Scala「标准库」包含哪些组成部分?
- Scala 3并未完全复用Scala 2标准库的所有集合。核心不可变集合(如
List、Map)目前仍沿用Scala 2的实现,但Scala 3已对集合API做了适配调整——优化类型推导、新增方法,同时移除了部分过时API。 - Scala标准库的核心组成:
- 集合框架:不可变/可变数据结构(
List、Set、Map、Array等) - 基础类型与控制结构:原生类型包装、
Option/Either、Try/Future等 - IO工具:文件操作、输入输出相关封装类
- 并发工具:
scala.concurrent包下的并发API、并行集合 - 元编程与反射:Scala 3专属的
scala.quoted编译时元编程API、scala.reflect反射工具 - 辅助工具:正则表达式、XML处理、数学计算类
- 集合框架:不可变/可变数据结构(
2. 是否存在Scala 3专属的「标准库」?
存在。Scala 3拥有适配自身新特性的专属标准库模块:
- 针对编译时元编程的
scala.quoted包 - 命令行参数处理工具
scala.util.CommandLine - 适配新类型系统的
scala.util.NotGiven等工具类 - 部分Scala 2库的适配重写版本,移除了对Scala 2旧特性(如旧隐式系统)的依赖
3. 是否有计划将Scala 2的库重实现为Scala 3版本?
有长期迭代计划,但并非全部重写:
- 核心集合框架:官方正在探索
List等核心集合的Scala 3原生实现,优先保证兼容性与性能,逐步替换老旧实现 - 依赖Scala 2旧特性的模块:已完成反射、元编程相关模块的Scala 3专属重写
- 整体策略是在向后兼容的前提下,逐步迭代优化,而非一次性全部替换
4. 在dotty仓库中找不到不可变列表(immutable list)的实现?
当前Dotty仓库中确实没有Scala 3原生的immutable.List实现,原因是:
- Scala 3目前仍复用Scala 2标准库中的
scala.collection.immutable.List代码,这部分实现暂存于Scala 2的官方仓库,未迁移至Dotty仓库 - 核心集合的Scala 3原生重写是长期工程,当前优先推进API适配与优化,后续会逐步完成迁移替换
内容的提问来源于stack exchange,提问作者pogurek
相关产品推荐
相关产品推荐

