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 时,你还需要对协变有一定的了解。希望你会发现使用类型相对简单,并且还为库开发人员提供了很多表现力、灵活性和控制力。
类型的优点
静态类型编程语言提供了许多优点,包括
- 帮助提供强大的 IDE 支持
- 在编译时消除许多类型的潜在错误
- 协助重构
- 提供强有力的文档,由于经过类型检查,因此不会过时
引入 Scala 类型系统的特性
鉴于此简要介绍,以下部分概述了 Scala 类型系统的特性。
此页面的贡献者
内容
- 简介
- Scala 特性
- 为什么选择 Scala 3?
- Scala 的一点体验
- 你好,世界!
- REPL
- 变量和数据类型
- 控制结构
- 领域建模
- 方法
- 一等函数
- 单例对象
- 集合
- 上下文抽象
- 顶级定义
- 总结
- 首次了解类型
- 字符串插值
- 控制结构
- 领域建模
- 工具
- OOP 建模
- FP 建模
- 方法
- 方法特性
- Scala 3 中的主方法
- 总结
- 函数
- 匿名函数
- 函数变量
- Eta 展开
- 高阶函数
- 编写自己的 map 方法
- 创建返回函数的方法
- 总结
- 打包和导入
- Scala 集合
- 集合类型
- 集合方法
- 总结
- 函数式编程
- 什么是函数式编程?
- 不可变值
- 纯函数
- 函数是值
- 函数式错误处理
- 总结
- 类型和类型系统
- 推断类型
- 泛型
- 交集类型
- 并集类型
- 代数数据类型
- 协变
- 不透明类型
- 结构类型
- 依赖函数类型
- 其他类型
- 上下文抽象
- 扩展方法
- 上下文参数
- 上下文界限
- 给定导入
- 类型类
- 多重相等性
- 隐式转换
- 总结
- 并发
- Scala 工具
- 使用 sbt 构建和测试 Scala 项目
- 工作表
- 与 Java 交互
- 面向 Java 开发人员的 Scala
- 面向 JavaScript 开发人员的 Scala
- 面向 Python 开发人员的 Scala
- 下一步去哪里