「大數據」(八十六)Scala基礎

【導讀:數據是二十一世紀的石油,蘊含巨大價值,這是·情報通·大數據技術系列第[86]篇文章,歡迎閱讀和收藏】

1 基本概念

Scala 是基於 Java 虛擬機即 JVM 的一門編程語言。所有 Scala 的代碼,都需要經過編譯為字節碼,然後交由 Java 虛擬機來運行。 Scala 可以任意調用 Java 的代碼, Scala 源代碼被編譯成 Java 字節碼,並可以調用現有的 Java 類庫。

「大數據」(八十六)Scala基礎

2 術語解釋

Scala 是一門多範式( multi-paradigm )的編程語言,設計初衷是要集成面向對象編程和函數式編程的各種特性。

3 Scala 特性

面向對象特性

Scala 是一種純面向對象的語言,每個值都是對象。對象的數據類型以及行為由類和特質描述。

類抽象機制的擴展有兩種途徑:一種途徑是子類繼承,另一種途徑是靈活的混入機制。這兩種途徑能避免多重繼承的種種問題

函數式編程

Scala 也是一種函數式語言,其函數也能當成值來使用。 Scala 提供了輕量級的語法用以定義匿名函數,支持高階函數,允許嵌套多層函數,並支持柯里化。 Scala 的 case class 及其內置的模式匹配相當於函數式編程語言中常用的代數類型。

更進一步,程序員可以利用 Scala 的模式匹配,編寫類似正則表達式的代碼處理 XML 數據。

靜態類型

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

(1) 泛型類

(2) 協變和逆變

(3) 標註

(4) 類型參數的上下限約束

(5) 把類別和抽象類型作為對象成員

(6) 複合類型

(7) 引用自己時顯式指定類型

(8) 視圖

(9) 多態方法

擴展性

Scala 的設計秉承一項事實,即在實踐中,某個領域特定的應用程序開發往往需要特定於該領域的語言擴展。 Scala 提供了許多獨特的語言機制,可以以庫的形式輕易無縫添加新的語言結構:

(1) 任何方法可用作前綴或後綴操作符

(2) 可以根據預期類型自動構造閉包。

併發性

Scala 使用 Actor 作為其併發模型, Actor 是類似線程的實體,通過郵箱發收消息。 Actor 可以複用線程,因此可以在程序中可以使用數百萬個 Actor, 而線程只能創建數千個。在 2.10 之後的版本中,使用 Akka 作為其默認 Actor 實現。


分享到:


相關文章: