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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值