Scala 类型系统与 Predef 对象深入解析
1. Scala 类型基础
Scala 2.10 引入了用户自定义的值类,这些类扩展自 AnyVal 。除了值类,其他类型都是引用类型,它们派生自 AnyRef , AnyRef 类似于 Java 中的 java.lang.Object 。在 Java 的对象模型中,没有一个能同时封装基本类型和引用类型的父类型,因为基本类型有特殊处理方式。在 Scala 2.10 之前,编译器会将一个名为 ScalaObject 的“标记”特质混入所有 Scala 引用类型的实例中,但从 Scala 2.11 开始,这种做法被取消,该特质也被移除。
2. 特殊类型:Nothing 和 Null
2.1 类型概述
Nothing 和 Null 是类型系统底层的两个特殊类型。 Nothing 是所有其他类型的子类型,而 Null 是所有引用类型的子类型。
Null 在大多数编程语言中是一个熟悉的概念,但通常它们不会定义 Null 类型,只是有一个 null 关键字,用于“赋值”给引用,表示该引用实际上没有赋值。在编译器中, Null 的实现就好像有以下声明:
超级会员免费看
订阅专栏 解锁全文
77

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



