1. 程式人生 > >Scala基礎簡述

Scala基礎簡述

編譯 基礎 tro int containe 值對象 聯系 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基礎簡述