Scala(Scala Programming Language)是一種多范式的編程語(yǔ)言,設(shè)計(jì)初衷是要集成面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性,Scala 運(yùn)行在Java虛擬機(jī)上,并兼容現(xiàn)有的Java程序,它具有高階類型、不變對(duì)象、模式匹配、多重繼承,宏等等等等你們認(rèn)為十分炫酷的功能,有喜歡學(xué)習(xí)編程的朋友可以下載試試。
Scala功能介紹
無(wú)縫Java互操作
Scala運(yùn)行在JVM上,因此Java和Scala堆??梢宰杂苫旌希瑢?shí)現(xiàn)完全無(wú)縫的集成。
類型推斷
所以類型系統(tǒng)感覺不那么靜態(tài)。不要為類型系統(tǒng)工作。讓類型系統(tǒng)為您工作!
并發(fā)與分發(fā)
對(duì)集合使用數(shù)據(jù)并行操作,對(duì)并發(fā)和分發(fā)使用actors,或者對(duì)異步編程使用future。
特點(diǎn)
結(jié)合Java風(fēng)格接口的靈活性和類的強(qiáng)大功能。想想有原則的多重繼承。
模式匹配
想想類固醇的“開關(guān)”。與類層次結(jié)構(gòu)、序列等匹配。
高階函數(shù)
函數(shù)是一級(jí)對(duì)象。以保證類型安全的方式組合它們。把它們用在任何地方,傳遞給任何人。
Scala安裝方法
下載Scala官方版的壓縮包,解壓后,雙擊msi文件,進(jìn)入安裝界面,點(diǎn)擊next
查看軟件協(xié)議,選擇i accept...,點(diǎn)擊next
設(shè)置軟件安裝位置,點(diǎn)擊browse可以自由設(shè)置,建議大家選擇安裝在D盤,然后點(diǎn)擊next
確認(rèn)安裝信息,點(diǎn)擊install
Scala官方版正在安裝,我們耐心等待
軟件安裝成功,點(diǎn)擊finish
接下來(lái)需要配置Scala的環(huán)境變量,需要提醒一下在安裝Scala之前需要安裝jdk,并且配置JDK的環(huán)境變量。我們看一下本地安裝完成后的目錄,如下圖所示。
最后我們配置Scala的環(huán)境變量,這臺(tái)電腦-->右鍵“屬性”-->高級(jí)系統(tǒng)設(shè)置-->環(huán)境變量,我們選擇Path環(huán)境變量,并點(diǎn)擊“編輯”按鈕,我們將上圖看到的Scala安裝目錄下的bean目錄配置到Path環(huán)境變量中即可。
安裝完成后我們需要檢驗(yàn)是否安裝成功,Win+R打開命令行,輸入 scala -version,若出現(xiàn)Scala的版本信息則說(shuō)明安裝成功,如下圖所示。
使用方法
使用Scala實(shí)現(xiàn)文件的拷貝
讀取行:要讀取文件的所有行,可以調(diào)用scala.io.Source對(duì)象的getLines方法:也可以對(duì)getLines應(yīng)用toArray或toBuffer方法。
將這些行放到數(shù)組或緩沖當(dāng)中,將文件內(nèi)容讀成一個(gè)字符串:val lines = source.mkString。
讀取字符:要從文件中讀取字符,可以直接把Source對(duì)象當(dāng)做迭代器:如果想查看某個(gè)字符,但是不處理掉的話,調(diào)用source對(duì)象的buffered方法。
讀取詞法單元或數(shù)字:通過split方法對(duì)轉(zhuǎn)化成行的文件內(nèi)容進(jìn)行劃分,通過toInt或toDouble方法把字符轉(zhuǎn)化成整數(shù)或浮點(diǎn)數(shù)。
寫入文本:Scala沒有內(nèi)建的對(duì)寫入文件的支持,要寫入文本文件,可以使用java.io.PrintWriter.
值得一提的是FileChannel在使用前,必須要打開。需要通過InputStream/OutputStream/RandomAccessFile獲取,BufferedReader/BufferedWriter獲取不到。
Scala編程語(yǔ)言有哪些優(yōu)缺點(diǎn)?
Scala提供了幾乎你能想到的所有編程語(yǔ)言特性:
快速實(shí)驗(yàn): Scala有交互式命令行(REPL), 可以在上面快速的試各種語(yǔ)法和代碼。這對(duì)學(xué)習(xí)新特性,或者實(shí)驗(yàn)新想法非常有用。(第1章)
一致性: 盡管Scala融合了靜態(tài)類型系統(tǒng)、面向?qū)ο?、函?shù)式編程等語(yǔ)言特性,但卻很少能看出融合的痕跡。Scala是我見到融合最多語(yǔ)言特性而又不顯得雜亂的編程語(yǔ)言之一。
類型安全:Scala創(chuàng)始人是教授,他先帶領(lǐng)創(chuàng)建了Java 5編譯器,而后覺得Java有太多羈絆而發(fā)明了Scala。 Scala編譯器和類型系統(tǒng)非常強(qiáng)大,它的目標(biāo)是盡量把軟件錯(cuò)誤消滅在編寫過程中。 Scala類型系統(tǒng)是圖靈完備的,甚至可以在編譯期間解決問題。
面向?qū)ο?/strong>: Scala是面向?qū)ο蟮木幊陶Z(yǔ)言,所有的變量和方法都封裝在對(duì)象中,可以把信息封裝起來(lái)供外部使用。(第2章)
函數(shù)式編程:Scala同時(shí)又是函數(shù)式編程語(yǔ)言,函數(shù)可以獨(dú)立存在,可以定義一個(gè)函數(shù)作為另一個(gè)函數(shù)的返回值,也可以接受函數(shù)作為函數(shù)的參數(shù)。這給組合函數(shù)帶來(lái)了很大的便利。如何把面向?qū)ο缶幊绦稳莩纱罘e木的話,函數(shù)式編程就像拼線條,更靈活和更有創(chuàng)意。(第3章)
異步編程: 由于函數(shù)式編程提倡變量不可變,使異步編程變得非常容易。同時(shí)Scala提供的Future(第5章), 和akka類庫(kù)(第9-11章),使得異步編程變得非常容易。
基于JVM: Scala會(huì)被編譯成為jvm bytecode,所以Scala能無(wú)縫集成已有的Java類庫(kù)。你可以非常自然的使用已經(jīng)存在的非常龐大且穩(wěn)定的Java類庫(kù),比如小巧好用的apache.common.*, 或者Java上的各種工具類庫(kù)。
因?yàn)槿绱吮姸嗵匦裕肧cala可以優(yōu)雅地編寫簡(jiǎn)潔的代碼,同時(shí)又能減少很多低級(jí)錯(cuò)誤;能快速進(jìn)行開發(fā),又能保證系統(tǒng)性能、團(tuán)隊(duì)協(xié)作和長(zhǎng)期維護(hù)。