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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值