自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Scala創(chuàng)始人致信51CTO:全面解答Scala的泛型優(yōu)勢

原創(chuàng)
開發(fā) 后端
Scala編程語言可以說是基于JVM的語言中最具有潛力的一個。在Scala創(chuàng)始人Martin Odersky的訪談中可以看出,泛型是他創(chuàng)建Scala的主要原因之一。近日,在51CTO編輯阿菜與Martin的電子郵件來往中,Martin詳細揭示了Scala泛型相對于Java泛型的優(yōu)越之處。

51CTO開發(fā)頻道最新推薦:Scala編程語言專題

【51CTO獨家特稿】Scala創(chuàng)始人Martin Odersky的訪談錄在51CTO已經(jīng)連續(xù)發(fā)表了一月有余,讀者的反映十分熱烈。訪談中,Martin介紹了很多Scala的設(shè)計理念以及語言特性,對于程序員了解Scala編程語言有著極大的幫助。然而,在很多具體的方面,限于訪談時間與篇幅的關(guān)系,Martin并沒能夠給予足夠的解釋。為此,51CTO的編輯于近日致電郵向其詢問,并很快得到了來自Martin的回信。信件包括幾個方面的內(nèi)容,本文主要介紹有關(guān)Scala泛型方面的。

第一篇訪談中,Martin講到了他在設(shè)計Java泛型時遇到的約束,而正是Java的約束性令Martin產(chǎn)生了創(chuàng)建一個超越Java的新語言的念頭,并最終因此產(chǎn)生了Scala編程語言。而在之后有關(guān)Scala的類型系統(tǒng)部分中,Martin解釋道,“Scala像Java一樣,使用泛型擦除模式(erasure),所以當程序運行時,我們不再能看到類型參數(shù)。這是為了能與Java互用而進行的設(shè)計”。另外,51CTO的編輯也在其他Scala的用戶那里看到這樣的疑問,說“聽說Scala在泛型上超越了Java,但具體是哪些方面,我也搞不清楚?!睘榇?,郵件中的問題之一就是:

具體來說,Scala在泛型上有哪些方面比Java更加好用呢?

以下是Martin Odersky的回答:

首先是Arrays。Scala中的array可以取泛型參數(shù)(parameterized types)以及類型變量(type variables)來做其元素的類型。這兩項在Scala中是可能的,但在Java中是不可能完成的:

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

我在Java泛型中感到最煩人的缺點之一就是array泛型的缺乏。要實現(xiàn)array的泛型,必要的步驟就是讓array變成非變量(non-variant)。Java無法做到這一點,這是因為其向后兼容的關(guān)系。但是,Scala可以做到。

第二,對基本類型(primitive types)的支持。上面給出的兩行代碼已經(jīng)顯示出基本類型可以被當做類型參數(shù)(type parameters)來使用。

第三,聲明地點可變性(declaration site variance)。對于類型協(xié)變量(types covariant)以及逆變量(contravariant)聲明的支持,將極大的改進絕大多數(shù)庫的一致性。

第四,對于上下邊界的支持(lower bound & upper bound),以及將多個上邊界(multiple upper bonds)做為復合類型(compound type)模式的支持。

我相信,具體化(reification)的缺乏可以通過manifests類來充分解決。Manifests類型現(xiàn)在在Scala中還正在設(shè)計中。具體化經(jīng)常被描述成一切泛型問題的萬靈藥,但它不是。還有就是,擁有泛型的成功的語言中,比如Haskell,ML或OCaml中,都在使用泛型擦除模式(erasure),所以(Scala中)使用這個模式并非只是為了向Java妥協(xié)而設(shè)計。

有關(guān)Scala的泛型就先介紹到這里。51CTO在未來將繼續(xù)帶來新的有關(guān)Scala編程語言的各種新消息,介紹,教程,以及各種你想知道的關(guān)于Scala的內(nèi)容。對于Java開發(fā)人員而言,Scala的學習曲線可以說是微乎其微,而且潛力也相當可觀。如果對Scala語言感興趣,歡迎繼續(xù)關(guān)注51CTO的Scala編程語言專題。

【51CTO.COM 獨家特稿,轉(zhuǎn)載請注明出處及作者!】

【相關(guān)閱讀】

  1. Scala的類型系統(tǒng):取代復雜的通配符
  2. Scala的類型系統(tǒng) 比Java更靈活
  3. Java程序員,你為什么要關(guān)注Scala
  4. Scala創(chuàng)始人:創(chuàng)造比Java更好的語言
  5. Java以外的選擇 Scala編程語言簡介
責任編輯:yangsai 來源: 51CTO.com
相關(guān)推薦

2010-08-11 08:35:00

Scala 2.8Scala創(chuàng)始人Martin Oder

2009-05-20 09:41:10

2009-07-08 11:44:40

ScalaGroovyJVM

2009-09-09 14:11:58

Scala泛型

2020-02-21 08:18:58

JavaScala編程語言

2010-09-14 13:22:17

Scala編程指南Scala

2011-09-08 13:50:51

51cto 51CTO

2010-04-06 18:19:00

51CTO技術(shù)周刊

2023-06-19 16:44:05

數(shù)字化

2010-01-28 11:08:32

MariaDB

2011-09-08 13:26:27

51cto 51CTO

2010-12-10 13:21:47

51CTO博客大賽

2010-05-10 13:00:37

華為認證

2016-06-16 17:34:59

html5高招

2010-05-04 16:22:45

Unix系統(tǒng)

2018-04-04 09:55:51

區(qū)塊鏈 51CTO

2012-01-08 13:00:05

2010-04-19 17:03:01

搜索谷歌

2009-07-08 12:43:59

Scala ServlScala語言

2011-09-08 14:24:57

51cto 51CTO
點贊
收藏

51CTO技術(shù)棧公眾號