vlambda博客
学习文章列表

Scala3迎来了语言的“彻底改革”

Scala 3 是具有 JVM 和 JavaScript 运行时的面向对象函数式语言的最新版本,现已作为生产版本提供。该项目将升级描述为“全面检修”,具有新的类型系统和语法改进。

在 2 月 17 日开始的候选发布阶段之后,Scala 3 的生产版本于 5 月 14 日推出。该版本中提到的改进之一是用于控制结构的新“安静”语法,例如 if、while 和 for。

Scala 具有 JVM 和 JavaScript 运行时,定位用于构建高性能系统,可以访问库生态系统。可以在此处找到下载 Scala 3 的说明。


WWDC 2021 回顾:iPadOS 15、企业改进和未宣布的 iOS 15 功能

 

Scala 3 中的其他语法改进:

  • 支持无干扰、对缩进敏感的编程风格的可选大括号。

  • new关键字现在是可选的。

  • 类型级通配符已从 更改_?

  • 隐式及其语法已经过大量修改。

Scala 3 中的新语言特性:

  • 在对 Scala 2 隐式的改进中,可以按类型指定 using 子句,从从未显式引用的术语变量名称中释放函数签名。

  • 给定的实例允许程序员确定某种类型的规范值,使使用类型类的编程更加直接,而不会泄露实现细节。

  • 扩展方法现在直接内置到语言中,以获得更好的错误消息和改进的类型推断。

  • 隐式转换已重新设计为 type-class 的实例Conversion

  • 上下文函数特性使上下文抽象成为一等公民。这些用作库作者表达简洁的特定领域语言的工具。

  • 如果编译器无法解析隐式参数,则会提供可以解决问题的导入建议

Scala 3 中的类型系统改进:

  • Enums 或 enumerations已经过重新设计,以便与 case 类很好地融合,并形成表达代数数据类型的新标准。

  • 不透明类型别名使开发人员能够隐藏实现细节而不会影响性能。

  • 交集和联合类型允许在继承层次结构之外表达类型约束。

  • 多态函数类型可以对除了值参数之外还带有类型参数的函数进行抽象。

  • 类型 lambda 是类型级函数,可以作为类型参数传递,而无需辅助类型定义。

  • Scala 3 支持匹配类型,而不是使用隐式解析对类型级计算进行编码。

Scala 3 中面向对象的编程特性:

  • Traits 更接近于类,现在可以接受参数,从而使它们作为模块化软件分解的工具更加强大。

  • 开放类要求库设计者将类标记为开放类。

  • 实现行为的效用 trait 有时不应该是推断类型的一部分。使用 Scala 3,可以将这些特征标记为透明,从而对用户隐藏继承。

  • 显式 null将 null 移出类型层次结构,以静态捕获错误。对安全初始化的额外检查可以找到对未初始化对象的访问。

Scala 3 还提供了元编程工具,包括编译时操作、引用代码块以及允许在编译时减少值和方法的内联功能