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

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

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

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

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

Scala簡(jiǎn)介

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

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

Scala的特性

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

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

2.函數(shù)式編程

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

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

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

4.靜態(tài)類型

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

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

5.擴(kuò)展性

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

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

5.使用Scala的框架

Lift是一個(gè)開源的Web應(yīng)用框架,旨在提供類似RubyonRails的東西。因?yàn)長(zhǎng)ift使用了Scala,所以Lift應(yīng)用程序可以使用所有的Java庫(kù)和Web容器。

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

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

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

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

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

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

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

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

    關(guān)注

    0

    文章

    42

    瀏覽量

    6398
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    簡(jiǎn)單說明一下Scala語(yǔ)言與其優(yōu)點(diǎn)

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

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

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

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

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

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

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

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

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

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

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