Scala类型系统详解
1. 引言
Scala类型系统的部分复杂性源于对Java类型系统特性的支持,这是为了实现互操作性。接下来,我们先从参数化类型开始回顾。
2. 参数化类型
我们已经在多处遇到过参数化类型。下面将回顾一些细节,并补充一些新的知识。
2.1 方差注解
方差注解的工作方式如下:
- List[+A] 表示 List 由单一类型 A 参数化, + 是方差注解,表明 List 在类型参数上是协变的。例如, List[String] 是 List[AnyRef] 的子类型,因为 String 是 AnyRef 的子类型。
- - 方差注解表示类型在类型参数上是逆变的。例如 Function2[-T1, -T2, +R] ,函数参数类型必须是逆变的。
2.2 类型构造器
类型构造器用于创建特定类型,类似于类的实例构造器用于构造类的实例。例如, List 是 List[String] 和 List[Int] 的类型构造器。实际上,所有类都是类型构造器,没有类型参数的类可视为零类型参数的“参数化类型”。
超级会员免费看
订阅专栏 解锁全文
77

被折叠的 条评论
为什么被折叠?



