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

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)类型是对数据的“分类”。

阅读更多
文章标签: scala 类型系统
个人分类: Scala
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭