0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

scala語言主要應(yīng)用領(lǐng)域詳解

姚小熊27 ? 來源:網(wǎng)絡(luò)整理 ? 2018-03-07 18:08 ? 次閱讀

Scala簡介

Scala是一門多范式的編程語言,一種類似java的編程語言,設(shè)計初衷是實現(xiàn)可伸縮的語言、并集成面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性。

scala是純粹的面向?qū)ο蟮恼Z言。java雖然是面向?qū)ο蟮恼Z言,但是它不是純粹的,因為java的基本數(shù)據(jù)類型不是類,并且在java中還有靜態(tài)成員變量和靜態(tài)方法。相反,scala是純粹面向?qū)ο蟮?,每個值都是對象,每個操作都是方法調(diào)用。

Scala的特性

1.面向?qū)ο筇匦?/h3>

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

2.函數(shù)式編程

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

更進一步,程序員可以利用Scala的模式匹配,編寫類似正則表達式的代碼處理XML數(shù)據(jù)。在這些情形中,順序容器的推導(dǎo)式(comprehension)功能對編寫公式化查詢非常有用。

由于JVM不支持尾部遞歸,Scala也不能完全支持尾部遞歸優(yōu)化。不過,在簡單的情況下,Scala編譯器可以把尾部遞歸優(yōu)化成循環(huán)。

4.靜態(tài)類型

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

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

5.擴展性

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

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

5.使用Scala的框架

Lift是一個開源的Web應(yīng)用框架,旨在提供類似RubyonRails的東西。因為Lift使用了Scala,所以Lift應(yīng)用程序可以使用所有的Java庫和Web容器。

scala語言主要應(yīng)用領(lǐng)域詳解

scala語言主要應(yīng)用領(lǐng)域

cala運行于JVM之上,并且它可以訪問任何的java類庫并且與java框架進行互操作,scala也大量重用了java類型和類庫。

大數(shù)據(jù)的開發(fā)語言是Scala的原因:

1:大數(shù)據(jù)的本身是計算數(shù)據(jù),而Scala即有面向?qū)ο蠼M織項目工程的能力,又有計算數(shù)據(jù)的功能。

2:現(xiàn)在大數(shù)據(jù)事實上的計算標準框架Spark,它是用Scala開發(fā)的,因為計算數(shù)據(jù),Scala它是函數(shù)式編程,它實現(xiàn)算法非常簡潔優(yōu)雅。

例:kafka,它是一個消息中間件,如果外部數(shù)據(jù)要流進大數(shù)據(jù)中心,我們一般都要用kafka作適配器,那如果大數(shù)據(jù)中心的數(shù)據(jù)流到外部,也是用kafka(如Spark計算的數(shù)據(jù)要交給HBASE或MySql,期間我們都會用kafka),很多的大數(shù)據(jù)組件都是用的Scala編寫的,所以,如果你想成為一個較高級的大數(shù)據(jù)開發(fā)高手,你一定要掌握Scala。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • scala
    +關(guān)注

    關(guān)注

    0

    文章

    42

    瀏覽量

    6627
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    5 月編程語言榜:C 再度暴漲,Scala 成功上位

    TIOBE 剛剛發(fā)布了 5 月編程語言排行榜。Scala 經(jīng)過長時間的沉淀,本月終于進入了 TIOBE 榜單的前 20 名。Scala 是一種 JVM 上運行的函數(shù)式編程語言,可與 J
    發(fā)表于 05-08 13:17

    Scala入門到精通——第三十節(jié) Scala腳本編程與結(jié)束語

    摘要: 本節(jié)主要內(nèi)容 REPL命令行高級使用 使用Scala進行Linux腳本編程 結(jié)束語 1. REPL命令行高級使用 在使用REPL命令行時,有時候我們需要粘貼的代碼比較大,而普通的粘貼可能會些
    發(fā)表于 06-26 17:44

    Linux操作系統(tǒng)應(yīng)用領(lǐng)域詳解

    領(lǐng)域仍是大勢所趨!Linux操作系統(tǒng)主要有以下三大應(yīng)用領(lǐng)域: 1. Linux作為企業(yè)級服務(wù)器的應(yīng)用Linux系統(tǒng)可以為企業(yè)架構(gòu)WWW服務(wù)器、數(shù)據(jù)庫服務(wù)器、負載均衡服務(wù)器、郵件服務(wù)器、DNS服務(wù)器
    發(fā)表于 07-12 18:24

    AD8221是什么?AD8221主要有哪些應(yīng)用領(lǐng)域?

    AD8221是什么?它有什么作用?AD8221主要有哪些特點?AD8221主要有哪些應(yīng)用領(lǐng)域?基于AD8221的交流耦合儀用放大器該怎么去設(shè)計?
    發(fā)表于 04-14 06:05

    MCU主要有哪些應(yīng)用領(lǐng)域?其優(yōu)點是什么?

    MCU為何如此重要?MCU主要有哪些應(yīng)用領(lǐng)域?其優(yōu)點是什么?
    發(fā)表于 06-26 06:58

    plc是什么?plc有哪些應(yīng)用領(lǐng)域?

    plc是什么?plc的特點有哪些?plc的應(yīng)用領(lǐng)域主要在哪些地方?
    發(fā)表于 07-05 07:35

    單片機主要有哪些應(yīng)用領(lǐng)域

    單片機可以做什么?單片機主要有哪些應(yīng)用領(lǐng)域呢?
    發(fā)表于 01-17 06:23

    單片機的主要應(yīng)用領(lǐng)域有哪些

    單片機的應(yīng)用范圍十分廣泛,主要應(yīng)用領(lǐng)域有:(1) 工業(yè)控制。單片機可以構(gòu)成各種工業(yè)控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)等。如數(shù)控機床、自動生產(chǎn)線控制、電機控制、溫度控制等。(2) 儀器儀表。如智能儀器、醫(yī)療器械
    發(fā)表于 02-25 07:40

    C語言應(yīng)用領(lǐng)域及前景怎么樣?

    開發(fā)。上面僅列出了幾個主要的C語言應(yīng)用領(lǐng)域,實際上,C語言幾乎可以應(yīng)用到程序開發(fā)的任何領(lǐng)域??梢奀語言
    發(fā)表于 03-03 14:14

    簡單說明一下Scala語言與其優(yōu)點

    Scala 是一種有趣的語言,是一種多范式的編程語言,其設(shè)計的初衷是要集成面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性。Scala運行在JVM上,兼容現(xiàn)有的Java程序,集成面向?qū)ο缶幊毯秃瘮?shù)式
    發(fā)表于 10-10 09:23 ?6871次閱讀

    計算機的主要應(yīng)用領(lǐng)域

    本視頻主要詳細介紹了計算機的主要應(yīng)用領(lǐng)域,分別是科學(xué)計算、過程檢控、信息管理、輔助系統(tǒng)、人工智能、語言翻譯。
    的頭像 發(fā)表于 12-25 16:09 ?20.6w次閱讀

    python語言應(yīng)用領(lǐng)域

    本視頻主要詳細介紹了python語言應(yīng)用領(lǐng)域,分別是桌面軟件、網(wǎng)絡(luò)編程、爬蟲開發(fā)、云計算開發(fā)、人工智能、金融分析、自動化運維、科學(xué)運算等。
    的頭像 發(fā)表于 12-27 15:24 ?1.9w次閱讀

    濾波器的主要分類及應(yīng)用領(lǐng)域

      濾波器是一種對信號有處理作用的器件或電路,主要有由電容、電感和電阻組成,濾波器的種類繁多,應(yīng)用領(lǐng)域也非常廣泛。接下來簡單介紹一下濾波器的主要分類及應(yīng)用領(lǐng)域。
    的頭像 發(fā)表于 01-21 15:08 ?1.4w次閱讀

    晶振的主要應(yīng)用領(lǐng)域有哪些?

    晶振的主要應(yīng)用領(lǐng)域有哪些?
    的頭像 發(fā)表于 07-20 17:47 ?5987次閱讀
    晶振的<b class='flag-5'>主要</b><b class='flag-5'>應(yīng)用領(lǐng)域</b>有哪些?

    什么是測量光幕?主要應(yīng)用領(lǐng)域有哪些?

    什么是測量光幕?主要應(yīng)用領(lǐng)域有哪些?
    的頭像 發(fā)表于 06-24 10:15 ?1462次閱讀
    什么是測量光幕?<b class='flag-5'>主要</b><b class='flag-5'>應(yīng)用領(lǐng)域</b>有哪些?

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品