Scala 是一种独特的语言,因为它是静态类型的,但通常_感觉_它灵活和动态。 例如,由于类型推断,您可以编写这样的代码而无需显式指定变量类型:
val a = 1
val b = 2.0
val c = "Hi!"
这使代码感觉是动态类型的。 并且由于新特性,例如 Scala 3 中的 联合类型,您还可以编写如下代码,非常简洁地表达出期望哪些值作为参数,哪些值作为返回的类型:
def isTruthy(a: Boolean | Int | String): Boolean = ???
def dogCatOrWhatever(): Dog | Plant | Car | Sun = ???
正如例子所暗示的,当使用联合类型时,这些类型不必共享一个公共层次结构,您仍然可以接受它们作为参数或从方法中返回它们。
如果您是应用程序开发人员,您将每天使用类型推断和每周使用泛型等功能。 当您阅读 Scaladoc 中的类和方法时,您还需要对_可变的(variance)_有所了解。 希望您会发现使用类型可以相当简单,而且使用类型可以为库开发人员提供了很多表达能力、灵活性和控制力。
类型的好处
静态类型的编程语言提供了许多好处,包括:
- 帮助提供强大的 IDE 支持
- 在编译时消除许多类的潜在错误
- 协助重构
- 提供强大的文档,因为它经过类型检查,所以不会过时
Scala 类型系统的特性介绍
鉴于此简要介绍,以下部分将概述 Scala 类型系统的特性。
Contributors to this page:
Contents
- 导言
- Scala 3 特性
- 为什么是 Scala 3 ?
- Scala 的味道
- Hello, World!
- The REPL
- 变量和数据类型
- 控制结构
- 领域建模
- 方法
- 头等函数
- 单例对象
- 集合
- 上下文抽象
- 顶层定义
- 总结
- 类型初探
- 字符串插值
- 控制结构
- 领域建模
- 工具
- OOP 领域建模
- 函数式领域建模
- 方法
- 方法特性
- main 方法
- 总结
- 函数
- 匿名函数
- 函数变量
- Eta 扩展
- 高阶函数
- 自定义 map 函数
- 创建可以返回函数的方法
- 总结
- 打包和导入
- Scala 集合
- 集合类型
- 集合方法
- 总结
- 函数式编程
- 什么是函数式编程?
- 不可变值
- 纯函数
- 函数是值
- 函数式错误处理
- 总结
- 类型和类型系统
- 类型推断
- 泛型
- 相交类型
- 联合类型
- 代数数据类型
- 型变
- 不透明类型
- 结构化类型
- 依赖函数类型
- 其他类型
- 上下文抽象
- 扩展方法
- Given 实例和 Using 语句
- 上下文绑定
- Given 导入
- 实现类型类
- 多元相等性
- 隐式转换
- 总结
- 并发
- Scala 工具
- 使用 sbt 构建和测试 Scala 项目
- worksheet
- 与 Java 交互
- 向 Java 开发者介绍Scala
- Scala for JavaScript Developers
- Scala for Python Developers
- 下一步去哪