您的位置:首页 > 其它

Scala 类型: Type vs. Class(类型与类)

2015-12-15 17:18 309 查看
Class(类)与Type(类型)是两个不一样的概念(java中,一直使用class表达type,现在也延续了这样的习惯)。

(Type-普遍性)TypeClass更”具体”,任何数据都有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)类型是对数据的“分类”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: