Scala 统一类型

Scala中,所有的值包括数字值与函数都具有类型。下图为类型层级的一个子集。
Scala类型层次中一个子集

Scala类型层级


Any是所有类型的超类型,被称为顶级类型。它定义了一些通用方法,例如equals、hashCode与toString。Any有两个直接子类:AnyVal与AnyRef。

AnyVal表示值类型。存在九种预定义的值类型并且它们都是非可用类型:Double、Float、Long、Int、Short、Byte、Char、Unit与Boolean。Unit是不携带有意义信息地值类型。可以使用()字面声明Unit实例,并且Unit只存在一个实例。所有的函数都必须有返回,所以Unit有时用于返回类型。

AnyRef表示引用类型。所有的非值类型都被定义为引用类型。Scala中每个用户定义类型都是AnyRef的子类型。如果Scala用于Java运行环境的上下文中,AnyRef对应java.lang.Object。

类型转化


类型转化依照以下方式:
类型转化

类型转化是单向的,逆方向将产生编译错误。
可以将引用类型转化为其子类型。

Nothing与Null


Nothing是所有类型的子类型,被称为底层类型。没有值的类型为Nothing。它通常用于发出非正常终止信号,例如抛出一个异常,程序退出,或无限循环(即,它是不能计算出值的表达式的类型,或不能正常返回的方法的类型)

Null是所有引用类型(即,AngRef的任意子类型)的子类型。它有一个被关键字null标识的单例值。Null主要用于与其他JVM语言进行交互,Scala代码中几乎不使用。

翻译源:Scala Tour

猜你喜欢

转载自blog.csdn.net/qq_32165041/article/details/83340319