欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

理解Scala的类型系统:探索其分层结构

最编程 2024-02-19 09:45:06
...

在 Scala 中,所有的值都有类型,包括数字和函数。

类型层次结构如下:

img

Any是所有类型的超类型,也称为*类型。它定义了一些通用的方法如equalshashCodetoStringAny有两个直接子类:AnyValAnyRef

  • AnyVal代表值类型。有9个预定义的非空的值类型分别是:DoubleFloatLongIntShortByteCharUnitBooleanUnit是不带任何意义的值类型,它仅有一个实例可以像这样声明:()。所有的函数必须有返回,所以说有时候Unit也是有用的返回类型。

  • AnyRef代表引用类型。所有非值类型都被定义为引用类型。在Scala中,每个用户自定义的类型都是AnyRef的子类型。如果Scala被应用在Java的运行环境中,AnyRef相当于java.lang.Object

Nothing 是所有类型的子类型,也称为底部类型。没有一个值是 Nothing 类型的。它的用途之一是给出非正常终止的信号,如抛出异常、程序退出或者一个无限循环(可以理解为它是一个不对值进行定义的表达式的类型,或者是一个不能正常返回的方法)。

Null 是所有引用类型的子类型(即 AnyRef 的任意子类型)。它有一个单例值由关键字 null 所定义。Null 主要是使得 Scala 满足和其他JVM语言的互操作性,但是几乎不应该在 Scala 代码中使用。

推荐阅读