Scala 簡介

Scala 特性

面向對象特性

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

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

函數式編程

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

更進一步,程序員能夠利用Scala的模式匹配,編寫相似正則表達式的代碼處理XML數據。後端

靜態類型

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

  • 泛型類
  • 協變和逆變
  • 標註
  • 類型參數的上下限約束
  • 把類別和抽象類型做爲對象成員
  • 複合類型
  • 引用本身時顯式指定類型
  • 視圖
  • 多態方法

擴展性

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

  • 任何方法可用做前綴或後綴操做符
  • 能夠根據預期類型自動構造閉包。

併發性

Scala使用Actor做爲其併發模型,Actor是相似線程的實體,經過郵箱發收消息。Actor能夠複用線程,所以能夠在程序中可使用數百萬個Actor,而線程只能建立數千個。在2.10以後的版本中,使用Akka做爲其默認Actor實現。閉包


誰使用了 Scala

  • 2009年4月,Twitter宣佈他們已經把大部分後端程序從Ruby遷移到Scala,其他部分也打算要遷移。
  • 此外,Wattzon已經公開宣稱,其整個平臺都已是基於Scala基礎設施編寫的。
  • 瑞銀集團把Scala用於通常產品中。
  • Coursera把Scala做爲服務器語言使用。
相關文章
相關標籤/搜索