Scala类型系统深度解析
1. 引言
Scala类型系统的部分复杂性源于对Java类型系统特性的支持,以实现与Java的互操作性。下面我们从参数化类型开始深入探讨。
2. 参数化类型
我们在很多地方都遇到过参数化类型。下面将回顾一些细节,并补充一些新的知识。
2.1 方差注解
方差注解的工作方式如下:
- 像 List[+A] 这样的声明表示 List 由单个类型 A 参数化。 + 是方差注解,表明 List 在类型参数上是协变的。例如,因为 String 是 AnyRef 的子类型,所以 List[String] 被视为 List[AnyRef] 的子类型。
- - 方差注解表示类型在类型参数上是逆变的。例如 Function2 的类型签名 Function2[-T1, -T2, +R] ,函数参数类型必须是逆变的。
2.2 类型构造器
参数化类型有时也被称为类型构造器,它用于创建特定的类型,类似于类的实例构造器用于构造类的实例。例如, List 是 List[String] 和 List[Int] 的类型构造器。实际上,所
超级会员免费看
订阅专栏 解锁全文
6

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



