Scala基礎簡述
* Scala基礎簡述
本文章作為Scala快速學習的教程,前提環境是:我假設在此之前,你已經學會了Java編程語言,並且我們以隨學隨用為目標(在此不會深度挖掘探討Scala更高級層次的知識)。其中語言基礎部分,不再做大量重復的無意義工作,我會直接使用RUNOOB.COM中的一些例子做一些整合,OK,我們開始。
* Scala行業習慣式開場
Scala是一門多範式的編程語言,一種類似java的編程語言,設計初衷是實現可伸縮的語言、並集成面向對象編程和函數式編程的各種特性。
** Scala面向對象:
它是一種純面向對象的語言,每個值都是對象。對象的數據類型以及行為由類和特質描述。
** Scala靜態類型:
Scala具備類型系統,通過編譯時檢查,保證代碼的安全性和一致性。
** Scala在JVM上運行:
Scala被編譯成由Java虛擬機執行的Java字節碼,所以由Scala寫好的程序編譯後可以運行在Java虛擬機中。
** Scala可以執行Java代碼:
Java和Scala代碼可以非常方便的互相調用,驚不驚喜?意不意外?
** Scala Web框架:
Lift框架
Play框架
Bowler框架
* Scala安裝及環境配置
好,扯完犢子之後,我們首先確保你的JDK配置是沒有問題的,因為Scala依賴JAVA,Java如何安裝配置,在此不再贅述。
Windows:
Windows環境下需要用到的工具包打包下載,包含了IDE工具,還包含一些東西請自行查看:
鏈接:http://pan.baidu.com/s/1o87EIbo 密碼:h59u
解壓scala到指定目錄,然後配置環境變量:
SCALA_HOME:
PATH中添加:
%SCALA_HOME%/bin
驗證是否安裝成功,打開cmd執行:
scala -version,如圖:
Linux:
Linux環境下需要用到的工具包打包下載,包含了IDE工具,還包含一些東西請自行查看:
鏈接:http://pan.baidu.com/s/1kUJFUYj 密碼:cy6q
解壓scala安裝包到指定目錄,然後配置/etc/profile,添加如下:
##SCALA_HOME
SCALA_HOME=/opt/modules/cdh/scala-2.10.4
export PATH=$PATH:$SCALA_HOME/bin
驗證是否安裝成功,打開終端或者CRT執行:
scala -version,如圖:
* Scala的IDE工具
在本系列教程的學習中,將JetBrains作為我們的編程工具,如果你有其它喜好,請另行選擇即可。安裝好之後,進行簡單的引導配置即可,註意:記得安裝Scala插件(可以在線,也可以離線,離線包已存放於分享的壓縮包中),習慣使用Android Studio或者PyCharm的朋友,應該會很熟悉了,完成之後,如圖所示:
註意:在Linux中,不可以使用CRT來打開,在Linux系統終端中,執行:
$ /opt/modules/idea-IC-141.178.9/bin/idea.sh,即可啟動該編譯工具。
* 第一個Scala程序
不再贅述如何使用記事本,然後scalac命令編譯程序(編譯後會出現.class字節碼文件,因為Scala最終也是運行在JVM中嘛),最後在CMD或者Linux終端中運行這個過程了,有編程基礎的同學,你們都懂得。號稱可以讓你理解整個程序的編譯原理,其實即使執行了這個過程,大多數人對整個編譯原理也不能夠理解,所以不再廢話,我們直接使用IDE工具來構建第一個Scala程序。
Step1、點擊New Project後,出現如下界面:
Next:
註意紅框內的內容,記得配置Scala的SDK和Java的JDK,還有你的項目的位置以及項目名稱,Finish後就OK了。
然後呢,我在左邊的樹狀圖中,在src目錄下新建了一個main這個package,在main包下,我新建了一個Scala Object,依次在main包上“右鍵”選擇“New”,接著“Scala class”,然後如圖(藍色框中的內容剛開始為class,修改為Object即可):
完成後,在當前HelloWorld.scala文件中編寫如下內容即可:
然後在代碼的編輯區域中按右鍵,選擇“Run Hello World”即可,運行成功,如圖:
* Scala數據類型
和Java的數據類型大致一樣,在此,只說一些相比於Java不同的數據類型:
Unit:表示無值,和其他語言中void等同。用作不返回任何結果的方法的結果類型。Unit只有一個實例值,寫成()。
Nothing:Nothing類型在Scala的類層級的最低端;它是任何其他類型的子類型。
Any:Any是所有其他類的超類
AnyRef:AnyRef類是Scala裏所有引用類(reference class)的基類
其余:Byte、Short、Int、Long、Float、Double、Char、String、Boolean、Null都和Java一樣
* Scala變量與常量
變量與常量的定義不再贅述。直接講述在Scala中以什麽樣的形式來定義變量和常量。
變量:使用var關鍵字來聲明變量
常量:使用val關鍵字來聲明常量
* Scala元組
簡單理解:元組是不可變的,元組可以包含不同類型的元素,元組中元素的訪問下標(索引)從1開始。
* Scala函數
Scala 有函數和方法,二者在語義上的區別很小。Scala 方法是類的一部分,而函數是一個對象可以賦值給一個變量。換句話來說在類中定義的函數即是方法。Scala還允許在函數中定義函數(內嵌函數),函數名也可以是如下特殊字符:+, ++, ~, &,-, -- , \, /, :等等
函數定義方法:
def關鍵字+函數名+參數體+返回類型+方法體,如:
* Scala數組
Scala 語言中提供的數組是用來存儲固定大小的同類型元素,與元組不同的是,存儲的元素必須都是相同的類型。
二維數組:
數組的合並:
* Scala集合
** List:List的特征是其元素以線性方式存儲,集合中可以存放重復對象。
請參考:List
** Map:Map 是一種把鍵對象和值對象映射的集合,它的每一個元素都包含一對鍵對象和值對象。
請參考:Map
** Set:Set是最簡單的一種集合。集合中的對象不按特定的方式排序,並且沒有重復對象。
請參考:Set
* Scala函數
請參看:函數
* Scala 閉包
請參看:閉包
* Scala類和對象
請參考:類和對象
* Trait
請參考:Trait
* Scala異常處理
請參考:異常處理
* 模式匹配
請參考:模式匹配
* Apply操作處理
請參考:提取器
* Scala文件IO
請參考:文件IO
* 總結
scala的基礎學習請類比Java+C#+Python,大同小異,但需要仔細體會其中差別。
個人微博:http://weibo.com/seal13
QQ大數據技術交流群(廣告勿入):476966007
作者:Z盡際
鏈接:https://www.jianshu.com/p/bc4289ed279c
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。
Scala基礎簡述