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