指南和概述

语言

标准库

涵盖 Scala 标准库的指南和概述。

此页面描述了迁移到 Scala 2.13 的集合用户的更改,并展示了如何使用 Scala 2.11/2.12 和 2.13 交叉构建项目。

作者:Julien Richard-Foy

这些页面描述了 Scala 2.13 中引入的集合框架的架构。与集合 API 相比,您将了解有关该框架内部工作原理的更多信息。

作者:Martin Odersky、Lex Spoon 和 Julien Richard-Foy

在本文档中,您将学习集合框架如何帮助您用几行代码定义自己的集合,同时重复使用框架中绝大部分的集合功能。

作者:Julien Richard-Foy

本指南展示了如何编写可应用于任何集合类型并返回相同集合类型的操作,以及如何编写可通过要构建的集合类型进行参数化的操作。

语言

涵盖 Scala 语言中特性的指南和概述。

作者:Adrien Piquerez

您需要了解的有关 Scala 3 兼容性和迁移的所有信息。

Scala 3 中的新增功能
作者:Nicolas Stucki

详细教程,涵盖 Scala 3 中编写宏涉及的所有特性。

作者:Mark Harrah

值类是 Scala 中的一种新机制,用于避免分配运行时对象。这是通过定义新的 AnyVal 子类来实现的。

Scala 3 中的新增功能
作者:Alvin Alexander

面向 Scala 语言最终用户的 TASTy 格式概述。

字符串插值允许用户直接在处理过的字符串文本中嵌入变量引用。以下是一个示例

val name = "James"
  println(s"Hello, $name")  // Hello, James
在上述示例中,文本 s"Hello, $name" 是一个处理过的字符串文本。这意味着编译器将对该文本执行一些附加工作。处理过的字符串文本由一组字符表示,这些字符位于 “.” 之前。字符串插值由 SIP-11 引入,其中包含实现的所有详细信息。

作者:Josh Suereth

Scala 2.10 引入了一项名为隐式类的新特性。隐式类是一个用 implicit 关键字标记的类。此关键字使类的主要构造函数在类处于作用域中时可用于隐式转换。

已存档
作者:Alvin Alexander

Scala 语言的简要介绍,重点介绍 Scala 2。现在已针对 Scala 3 更新,我们正在合并这两者。

编写库

有关向 Scala 生态系统贡献开源库的指南。

作者:Julien Richard-Foy

列出库编写者应设置的所有工具,以发布和记录其库。

并行和并发编程

涵盖 Scala 的一些并行和并发编程库的完整指南。

作者:Philipp Haller、Aleksandar Prokopec、Heather Miller、Viktor Klang、Roland Kuhn 和 Vojin Jovanovic

Future 提供了一种以高效且非阻塞的方式推理并行执行许多操作的方法。Future 是一个占位符对象,用于表示可能尚不存在的值。通常,Future 的值是并发提供的,随后可以使用该值。以这种方式组合并发任务往往会导致更快速、异步、非阻塞的并行代码。

兼容性

哪些东西可以一起使用(或不能一起使用)。

哪些 Scala 版本可以在哪些 JDK 版本上运行

当两个版本的 Scala 二进制兼容时,可以在一个 Scala 版本上编译项目,并在运行时链接到另一个 Scala 版本。安全的运行时链接(仅限于此!)表示,在混合场景中执行程序时,JVM 不会抛出 LinkageError(或其子类),假设在编译和在同一版本的 Scala 上运行时不会出现此类错误。具体而言,这意味着你可以对运行时类路径上的外部依赖项使用与编译时使用的 Scala 版本不同的版本,只要它们二进制兼容即可。换句话说,与在同一版本的 Scala 上编译和运行所有内容相比,在不同的二进制兼容版本上进行单独编译不会引入问题。

对于任何高效的软件生态系统来说,一套多样且全面的库都非常重要。虽然开发和分发 Scala 库很容易,但良好的库创作不仅仅是编写代码并发布它。在本指南中,我们将介绍二进制兼容性的重要主题。

工具

有关核心 Scala 工具(如 Scala REPL 和 Scaladoc 生成)的参考材料。

Scala REPL 是一个工具(scala),用于评估 Scala 中的表达式。

scala 命令将通过将源脚本包装在模板中,然后编译并执行生成的程序来执行该脚本

已更新
作者:Krzysztof Romanowski、Aleksander Boruch-Gruszecki、Andrzej Ratajczak、Kacper Korban、Filip Zybała

Scala 3 中 Scala 的 API 文档生成工具的更新。

Scala 的 API 文档生成工具。

内容

编译器

涵盖 Scala 编译器的指南和概述:编译器插件、反射和元编程工具(如宏)。

已在 Scala 3 中移除
作者:Heather Miller、Eugene Burmako 和 Philipp Haller

Scala 的运行时/编译时反射框架。

内容
已在 Scala 3 中移除
作者:Eugene Burmako

Scala 的元编程框架。

内容
作者:Lex Spoon 和 Seth Tisue

编译器插件允许自定义和扩展 Scala 编译器。本教程介绍了插件工具,并指导你如何创建一个简单的插件。

作者:社区

控制 scalac 如何编译代码的各种选项。

作者:Torsten Schmits

一个用于提供更友好的错误消息的新引擎,打印依赖隐式的链和有颜色的找到/必需的类型差异。

作者:Lukas Rytz 和 Andrew Marki

编译器可以执行各种优化。

旧版

涵盖不再与最新 Scala 版本(2.12+)相关的功能的指南。

作者:Martin Odersky 和 Lex Spoon

这些页面详细描述了 Scala 集合框架的架构。与集合 API 相比,你将进一步了解框架的内部工作原理。你还将了解此架构如何帮助你用几行代码定义自己的集合,同时重用框架中绝大部分的集合功能。