Scala 类型: Type vs. Class(类型与类)
2015-12-15 17:18
309 查看
Class(类)与Type(类型)是两个不一样的概念(java中,一直使用class表达type,现在也延续了这样的习惯)。
(Type-普遍性)Type比Class更”具体”,任何数据都有type。
(Class-局限性)Class是面向对象系统里,对同一类数据的抽象。
在没有泛型之前,类型系统(Type System)不存在高阶类型概念(Higher-Kinded Type),直接与类(Class)一一映射;泛型出现之后,就不再一一映射了。例如,
类型(type)一致的对象,其类(class)一致;类(class)一致的对象,其类型(type)不一定一致。
(Type System)类型系统是所有语言都有的概念,一切数据都有(Type)类型。(Class)类更多存在于面向对象语言,非面向对象也有“结构体”等与之相似的概念;(Class)类是对数据的抽象,而(Type)类型是对数据的“分类”。
(Type-普遍性)Type比Class更”具体”,任何数据都有type。
(Class-局限性)Class是面向对象系统里,对同一类数据的抽象。
在没有泛型之前,类型系统(Type System)不存在高阶类型概念(Higher-Kinded Type),直接与类(Class)一一映射;泛型出现之后,就不再一一映射了。例如,
class List[T]的具体类型(type),根据不同的类型参数,可以有
List[Int]、
List[String]… etc;但类(class)只有一个
List。
类型(type)一致的对象,其类(class)一致;类(class)一致的对象,其类型(type)不一定一致。
import scala.reflect.runtime.universe._ classOf[List[Int]] == classOf[List[String]] // true # class scala.collection.immutable.List typeOf[List[Int]] == typeOf[List[String]] // false # scala.List[Int], scala.List[String]
(Type System)类型系统是所有语言都有的概念,一切数据都有(Type)类型。(Class)类更多存在于面向对象语言,非面向对象也有“结构体”等与之相似的概念;(Class)类是对数据的抽象,而(Type)类型是对数据的“分类”。
相关文章推荐
- 轻量级JavaEE企业应用实战(四)
- 安卓布局自适应px适配
- 【android】初学安卓,简单布局和activity切换
- springmvc环境下使用ajaxfileupload.js进行文件上传
- MySQL索引背后的数据结构及算法原理
- getResourceAsStream的用法
- java笔记-继承
- 第一个简单的Struts2的例子
- spinlock自旋锁
- Java多线程实现
- eclipse和android studio导入工程的错误
- UICollectionView的简单使用(二)— 瀑布流(石工布局)
- MySQL加载配置文件的顺序
- UART 通信之RTC/CTS DTR/DSR流控制
- java文件读写,文本与文件互换
- UI之delegate
- Handler用法
- C语言基础 之 switch-case语句
- PHP漏洞全解(八)-文件上传漏洞
- 上下拉刷新实现功能