Scala 3 迎来全面的革新!包含重要的类型系统、语言特性及大量语法改进

194 阅读2分钟

用于JVM和JavaScript运行时函数式语言 Scala 最新升级到 3.0 版本,具有新的类型系统、新的语言特性和大量的语法改进。Thinkstock 的主编将这次升级描述为 "彻底的大修改"。

Scala 3的生产版本于5月14日推出,Scala同时具有JVM和JavaScript运行机制,并被定位为用于构建高性能系统,可以访问生态系统的库。Scala 3 相关文档说明可以 在这里 找到。

Scala 3的新语言特性:

  • 在对Scala 2隐式的改进中,使用条款可以按类型指定,将函数签名从从未被明确提及的术语变量名中解放出来。
  • 给定实例 允许程序员确定某种类型的典型值,使类型类的编程更加直接,而不会泄露实现细节。
  • 扩展方法 现在直接内置于语言中,以获得更好的错误信息和改进的类型推理。* 隐式转换已被重新设计为类型类的实例Conversion
  • 上下文函数功能使上下文抽象成为一流的公民。
  • 如果一个隐式参数不能被编译器解决,就会提供导入建议来解决这个问题。

Scala 3中的类型系统改进:

  • Enums(或称枚举) 被重新设计,以便与案例类很好地融合,形成表达代数数据类型的新标准。
  • 不透明的类型别名使开发者能够隐藏实现细节而不影响性能。
  • 交叉和联合类型能够在继承层次结构之外表达类型约束。
  • 多态函数类型 可以抽象出除值参数外还接受类型参数的函数。* 类型lambdas是类型级的函数,可以作为类型参数传递,而不需要辅助的类型定义。
  • Scala 3支持类型上的匹配,而不是使用隐式解析对类型级计算进行编码。

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

  • 特质更接近于类,现在可以接受参数 ,从而使它们作为模块化软件分解的工具变得更加强大。
  • 开放类 要求库设计者将类标记为开放。* 实现行为的实用特质有时不应该是推断类型的一部分。在Scala 3中,这些特质可以被标记为透明的,向用户隐藏继承关系。
  • 明确的null 将null移出类型层次,以便静态地捕捉错误。

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

Scala 3的其他语法改进:

  • 可选的大括号支持无干扰、缩进敏感的编程风格。
  • new关键字现在是可选的。
  • 类型级通配符从_ 改为?
  • 隐式及其语法经过了大量修改。