Scala前言

一.概念

Scala建立在JVM之上,兼容了現(xiàn)有java程序,是一種純粹的面向?qū)ο?/a>編程語言,而又無縫地結(jié)合了命令式編程和函數(shù)式編程風(fēng)格。

二.發(fā)展歷史

? ? ? ? 聯(lián)邦理工學(xué)院洛桑(EPFL)的Martin Odersky于2001年基于Funnel的工作開始設(shè)計Scala。Funnel是把函數(shù)式編程思想和Petri網(wǎng)相結(jié)合的一種編程語言。Odersky先前的工作是Generic Java和javac(Sun Java編譯器)。Java平臺的Scala于2003年底/2004年初發(fā)布。.NET平臺的Scala發(fā)布于2004年6月。該語言第二個版本,v2.0,發(fā)布于2006年3月。

? ? ? 截至2009年9月,最新版本是版本2.7.6 。Scala 2.8預(yù)計的特性包括重寫的Scala類庫(Scala collections library)、方法的命名參數(shù)和默認參數(shù)、包對象(package object),以及Continuation.

? ? ? ?2009年4月,Twitter宣布他們已經(jīng)把大部分后端程序從Ruby遷移到Scala,其余部分也打算要遷移。此外, Wattzon已經(jīng)公開宣稱,其整個平臺都已經(jīng)是基于Scala基礎(chǔ)設(shè)施編寫的。

三.特性

面向?qū)ο螅?/h3>

? ? ? Scala是一種純面向?qū)ο蟮恼Z言,每一個值都是對象。對象的數(shù)據(jù)類型以及行為由類和特征(Trait)描述。類抽象機制的擴展有兩種途徑。一種途徑是子類繼承,另一種途徑是靈活的混入(Mixin)機制。這兩種途徑能避免多重繼承的種種問題。

函數(shù)式編程:

? ? ? Scala也是一種函數(shù)式語言,其函數(shù)也能當(dāng)成值來使用。Scala提供了輕量級的語法用以定義匿名函數(shù),支持高階函數(shù),允許嵌套多層函數(shù),并支持柯里化。Scala的Case Class及其內(nèi)置的模式匹配相當(dāng)于函數(shù)式編程語言中常用的代數(shù)類型(Algebraic Type)。

靜態(tài)類型:

? ? ? Scala是具備類型系統(tǒng),通過編譯時的檢查,保證代碼的安全性和一致性。類型系統(tǒng)具體支持以下特性:

泛型類,型變注釋(Variance Annotation),類型繼承結(jié)構(gòu)的上限和下限,把類別和抽象類型作為對象成員,復(fù)合類型,引用自己時顯式指定類型,視圖,多態(tài)方法。

擴展性:

? ? ? ?Scala的設(shè)計承認一個事實,即在實踐中,某個領(lǐng)域特定的應(yīng)用程序開發(fā)往往需要特定于該領(lǐng)域的語言擴展。Scala提供了許多獨特的語言機制,可以以庫的形式輕易無縫添加新的語言結(jié)構(gòu):

? ? ? 任何方法可用作前綴或后綴操作符,可以根據(jù)預(yù)期類型自動構(gòu)造閉包。聯(lián)合使用以上兩個特性,使你可以定義新的語句而無須擴展語法也無須使用宏之類的元編程特性。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容