Scala统一的类型
来源:互联网 发布:在jsp中写java代码 编辑:程序博客网 时间:2024/05/22 08:14
- Scala类型的层次结构
- 类型转换
- Nothing和Null
在Scala中,所有值都有类型,包括数值和函数。下图说明了类的层次结构。
Scala类型的层次结构
Any
是所有类的父类,也称为top类型。它定义了一些通用的方法,如equals
,hashCode
和toString
。Any
的两个直接子类是AnyVal
和 AnyRef
。
AnyVal
代表值类型。有9中预定义的值类型,他们都是非空的:Double
,Float
,Long
,Int
,Short
,Byte
,Char
,Unit
, 和Boolean
。Unit
是一种没有任何意义信息的值类型。可以使用()
声明Unit
的实例。所有函数都必须有返回值,所以有时候Unit
是有用的返回类型。
AnyRef
代表引用类型。所有非值类都定义为引用类型。在Scala中,每个用户定义的类都是AnyRef
的子类型。如果在Java运行时环境的上下文中使用Scala,则AnyRef
对应于java.lang.Object
。
这里有个示例说明字符串,整型,字符,布尔值以及函数都是对象,就像其它对象一样:
val list: List[Any] = List( "a string", 732, // an integer 'c', // a character true, // a boolean value () => "an anonymous function returning a string")list.foreach(element => println(element))
程序中定义了一个List[Any]
类型的变量list
。这个列表用多种类型的元素初始化,但是都是scala.Any
的实例,所以可以将它们添加到列表中。
下面是程序的输出:
a string732ctrue<function>
类型转换
值类型可以按照如下方式进行转换:
例如:
val x: Long = 987654321val y: Float = x // 9.8765434E8 (note that some precision is lost in this case)val face: Char = '☺'val number: Int = face // 9786
转换是单向的。下面的转换不能通过编译:
val x: Long = 987654321val y: Float = x // 9.8765434E8val z: Long = y // Does not conform
你也将引用类型转换为其子类型。之后会进行详细说明。
Nothing和Null
Nothing
是所有类型的子类型,也叫做bottom类型。没有值的类型是Nothing
。通常用于标记未终止,如抛出异常,程序退出或者无限循环(即它时一种没有值的类型,或者不正常返回的方法)
Null
是所有引用类型(即AnyRef的任何子类型)的子类型。它有个单一值,由关键字null
标记。Null
用于与其它JVM语言进行交互,不应该在Scala代码中使用它。之后会讨论替代它的方法。
- Scala统一的类型
- .C#的统一类型系统
- scala的标准类型
- scala的类型系统
- scala常用的类型
- scala的类与类型
- scala类型参数的问题
- Scala 类型参数的界定
- Scala 类型
- Scala类型
- scala学习之: scala的结构类型代码实战
- Scala 的Trait和类型转换
- Scala 实现两个类型比较的实现
- scala 的模式匹配与类型系统
- 理解scala的元组类型
- ios 统一类型标识符
- 使用泛型统一传入的参数类型
- SpringMVC接收pojo里面包含时间类型的统一处理
- bzoj 1088: [SCOI2005]扫雷Mine (枚举+判定)
- NGUI源码分析(五) UIPanel
- matlab 图片批量读取
- web.js.数组之join
- C++创建对象的三种方式
- Scala统一的类型
- DescendingOrder
- Axure使用——创建折叠菜单
- HTML5 拖放Drag 和 drop用法以及事件介绍
- First Unique Character in a String
- eclipse,工程/文件目录,相对路径(真心的详细~)
- BZOJ 1449: [JSOI2009]球队收益 拆边费用流
- 【算法题】不使用加减乘除符号计算两数之和a+b
- SharedPreference的使用 第一次进入APP时,进入导航页面,再次进入时直接进入主页面 去除ActionBar