Scala创始人致信51CTO:全面解答Scala的泛型优势
创始人
2024-04-01 04:01:20
0

51CTO开发频道最新推荐:Scala编程语言专题

【51CTO独家特稿】Scala创始人Martin Odersky的访谈录在51CTO已经连续发表了一月有余,读者的反映十分热烈。访谈中,Martin介绍了很多Scala的设计理念以及语言特性,对于程序员了解Scala编程语言有着极大的帮助。然而,在很多具体的方面,限于访谈时间与篇幅的关系,Martin并没能够给予足够的解释。为此,51CTO的编辑于近日致电邮向其询问,并很快得到了来自Martin的回信。信件包括几个方面的内容,本文主要介绍有关Scala泛型方面的。

第一篇访谈中,Martin讲到了他在设计Java泛型时遇到的约束,而正是Java的约束性令Martin产生了创建一个超越Java的新语言的念头,并最终因此产生了Scala编程语言。而在之后有关Scala的类型系统部分中,Martin解释道,“Scala像Java一样,使用泛型擦除模式(erasure),所以当程序运行时,我们不再能看到类型参数。这是为了能与Java互用而进行的设计”。另外,51CTO的编辑也在其他Scala的用户那里看到这样的疑问,说“听说Scala在泛型上超越了Java,但具体是哪些方面,我也搞不清楚。”为此,邮件中的问题之一就是:

具体来说,Scala在泛型上有哪些方面比Java更加好用呢?

以下是Martin Odersky的回答:

首先是Arrays。Scala中的array可以取泛型参数(parameterized types)以及类型变量(type variables)来做其元素的类型。这两项在Scala中是可能的,但在Java中是不可能完成的:

  1. val xs = new Array[List[Int]](leng)  
  2. val ys = new Array[T](len)  // 这里的T是类型变量 

我在Java泛型中感到最烦人的缺点之一就是array泛型的缺乏。要实现array的泛型,必要的步骤就是让array变成非变量(non-variant)。Java无法做到这一点,这是因为其向后兼容的关系。但是,Scala可以做到。

第二,对基本类型(primitive types)的支持。上面给出的两行代码已经显示出基本类型可以被当做类型参数(type parameters)来使用。

第三,声明地点可变性(declaration site variance)。对于类型协变量(types covariant)以及逆变量(contravariant)声明的支持,将极大的改进绝大多数库的一致性。

第四,对于上下边界的支持(lower bound & upper bound),以及将多个上边界(multiple upper bonds)做为复合类型(compound type)模式的支持。

我相信,具体化(reification)的缺乏可以通过manifests类来充分解决。Manifests类型现在在Scala中还正在设计中。具体化经常被描述成一切泛型问题的万灵药,但它不是。还有就是,拥有泛型的成功的语言中,比如Haskell,ML或OCaml中,都在使用泛型擦除模式(erasure),所以(Scala中)使用这个模式并非只是为了向Java妥协而设计。

有关Scala的泛型就先介绍到这里。51CTO在未来将继续带来新的有关Scala编程语言的各种新消息,介绍,教程,以及各种你想知道的关于Scala的内容。对于Java开发人员而言,Scala的学习曲线可以说是微乎其微,而且潜力也相当可观。如果对Scala语言感兴趣,欢迎继续关注51CTO的Scala编程语言专题

【51CTO.COM 独家特稿,转载请注明出处及作者!】

【相关阅读】

  1. Scala的类型系统:取代复杂的通配符
  2. Scala的类型系统 比Java更灵活
  3. Java程序员,你为什么要关注Scala
  4. Scala创始人:创造比Java更好的语言
  5. Java以外的选择 Scala编程语言简介

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...