中国领先的IT技术网站
|
|

Scala创始人致信51CTO:全面解答Scala的泛型优势

Scala编程语言可以说是基于JVM的语言中最具有潜力的一个。在Scala创始人Martin Odersky的访谈中可以看出,泛型是他创建Scala的主要原因之一。近日,在51CTO编辑阿菜与Martin的电子邮件来往中,Martin详细揭示了Scala泛型相对于Java泛型的优越之处。

作者:阿菜来源:51CTO.com|2009-06-10 14:43

Tech Neo技术沙龙 | 11月25号,九州云/ZStack与您一起探讨云时代网络边界管理实践


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编程语言简介
【责任编辑:杨赛 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

信息安全风险评估

信息安全风险评估理论研究日趋成熟,相关资料比较充分,但有关评估实际工作的参考资料很少。本书以信息安全风险评估实践为基础,围绕评估工...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊
× CTO训练营(深圳站)