1. 程式人生 > 其它 >Scala:多正規化的程式語言

Scala:多正規化的程式語言

什麼是Scala

Scala是一門多正規化的程式語言,一種類似java的程式語言,設計初衷是實現可伸縮的語言、並整合面向物件程式設計和函數語言程式設計的各種特性。

Scala語言來自於Scalable(可伸縮的)既可以寫一些小的指令碼,又可以寫一寫複雜的伺服器端的程式。

Scala是一門純正的面嚮物件語言,具有OO特徵。ssl證書申請

Scala是一門函式式語言,可以用函式式思想來編寫程式碼

Scala是構建於JVM之上的,與java可以無縫互操作。

主要特性:

1、面向物件程式設計:Scala是一種純面向物件的語言,每一個值都是物件。物件的資料型別以及行為由類和特質描述。類抽象機制的擴充套件有兩種途徑。一種途徑是子類繼承,另一種途徑是靈活的混入機制。這兩種途徑能避免多重繼承的種種問題。

2、函數語言程式設計:Scala也是一種函式式語言,其函式也能當成值來使用。Scala提供了輕量級的語法用以定義匿名函式,支援高階函式,允許巢狀多層函式,並支援柯里化。Scala的case class及其內建的模式匹配相當於函數語言程式設計語言中常用的代數型別。更進一步,程式設計師可以利用Scala的模式匹配,編寫類似正則表示式的程式碼處理XML資料。

3、靜態型別:Scala語言具有型別系統,支援相當多的特性:泛型類,協變和逆變,標註,型別引數的上下限約束,把類別和抽象型別作為物件成員,複合型別,引用自己時顯式指定型別,檢視,多型方法。

4、擴充套件性:Scala的設計承認一個事實,即在實踐中,某個領域特定的應用程式開發往往需要特定於該領域的語言擴充套件。Scala提供了許多獨特的語言機制,可以以庫的形式輕易無縫新增新的語言結構:任何方法可用作字首或字尾操作符;可以根據預期型別自動構造閉包。聯合使用以上兩個特性,使你可以定義新的語句而無須擴充套件語法也無須使用巨集之類的超程式設計特性。

5、併發性:Scala使用Actor作為其併發模型,Actor是類似執行緒的實體,有一個郵箱發收訊息。Actor可以複用執行緒,因此可以在程式中可以使用數百萬個Actor,而執行緒只能建立數千個。在2.10之後的版本中,使用Akka作為其預設Actor實現。

Scala的函式式風格

Scala的魅力之一就是其函數語言程式設計風格實現。如果把上面介紹的面向物件特性看成是Scala的“寒冰掌”,讓你感受到了迥異於Java實現的特性,那麼,Scala強大而魔幻的函式式特性,就是其另一大殺招“火焰刀”,噴發的是無堅不摧的怒焰之火。

集合型別

Scala常用集合型別有Array、Set、Map、Tuple和List等。Scala提供了可變(mutable)與不可變(immutable)的集合型別版本,多執行緒應用中應該使用不可變版本,這很容易理解。

Array:陣列是可變的同類物件序列;

Set:無序不重複集合型別,有可變和不可變實現;

Map:鍵值對的對映,有可變和不可變實現;

Tuple:可以包含不同類元素,不可變實現;

List:Scala的列表是不可變實現的同類物件序列,因應函數語言程式設計特性的需要。

List大概是日常開發中使用最多的集合型別了。

這些集合型別包含了許多高階函式,如:map、find、filter、fold、reduce等等,構建出濃郁的函式式風格用法。