Scala类型层次结构

在Scala编程语言中,一切都是对象。甚至数据类型在Scala中都被视为对象,并且具有某种方法来执行由它们存储的数据的操作。因此,您定义的所有数据类型,函数/方法,类都有一个类型,并且该类型在类型层次结构中定义。

让我们来看看该类型的层次结构图,这将有助于你理解类型层次结构。

类型层次图

object myObject{
	def main(args: Array[String]) { 
	    println("Creating a set of type = 'Any' ")
		val anySet : Set[Any]  = Set(34, "nhooo", true, List(32, 3, 45))
		println("Set is : " + anySet)
	} }


输出:

Creating a set of type = 'Any' 
Set为: Set(34, nhooo, true, List(32, 3, 45))

Any类型具有两个直接子类型:AnyVal和AnyRef类型。

2)AnyVal

代表值类型的Any子类型为AnyVal。在scala中,总共有九种预定义的值类型,它们是AnyVal的子类型。他们是 :

  • Double表示双精度十进制类型。

  • Float表示单精度十进制类型。

  • Long表示64位有符号整数类型(值:-9223372036854775808至9223372036854775807)。

  • Int表示32位带符号整数类型(值:-2147483648至2147483647)。

  • Short代表16位带符号整数类型(值:-32768至32767)。

  • Byte代表8位有符号值(值:-128至127)。

  • Char表示字符类型(值:所有有效字符)。

  • Unit代表单位类型。

  • Boolean表示布尔类型(值:true / false)。

程序:

object myObject{
	def main(args: Array[String]) { 
	    println("Creating a set of type = 'AnyVal' ")
		val anySet : Set[AnyVal]  = Set(987.12331, 89.76, 87694421, 34, 'i', true)
		println("Set为: " + anySet)
	} 
}

输出:

Creating a set of type = 'AnyVal' 
Set为: HashSet(89.76, 87694421, true, i, 34, 987.12331)

3)AnyRef

表示非值类型的Any的子类型为AnyRef。默认情况下,所有用户定义的类都引用此类型。

程序:

object myObject{
    
	def main(args: Array[String]) { 
	    println("Creating a set of type = 'AnyRef' ")
		val anySet : Set[AnyRef]  = Set("includehelp")
		println("Set为: " + anySet)
	} 
}

输出:

Creating a set of type = 'AnyRef' 
Set为: Set(includehelp)

这些与Scala库的主要类型有关,它为Scala中的所有实体提供了一些基本功能。

层次结构的底部有两个重要的类型。他们是,

  1. Nothing

  2. Null

a)Nothing

Scala中所有类型的子类型在层次结构底部的类型为Nothing。没有这种类型的值。

程序:

object myObject{
	def main(args: Array[String]) { 
	    println("Creating a set of type = 'Nothing' ")
		val anySet : Set[Nothing]  = Set()
		println("Set为: " + anySet)
	} 
}

输出:

Creating a set of type = 'Nothing' 
Set为: Set()

Scala中的Nothing类型用于发信号通知非终止,例如程序退出。

2)Null

该类型是引用类型的子类型(对于AnyRef类型的所有子类型)。

程序:

object myObject{
	def main(args: Array[String]) { 
	    println("Creating a set of type = 'Null' ")
		val anyRef : List[Null]  = List()
		println("Set为: " + anyRef)
	} 
}

输出:

Creating a set of type = 'Null' 
Set为: List()