版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Scala簡介目錄/Contents01
Scala簡介Scala簡介01Scala簡介Scala是一門多范式的編程語言,一種類似java的編程語言,設計初衷是實現可伸縮的語言、并集成面象對象編程的各種特性。Scala將面向對象和函數式編程結合成一種簡潔的高級語言。Scala的靜態(tài)類型有助于避免復雜應用程序中的錯誤,它的JVM和JavaScript運行時讓你可以輕松地訪問龐大的庫生態(tài)系統來構建高性能系統。Scala簡介Scala是一門以Java虛擬機(JVM)為運行環(huán)境并將面向對象和函數式編程的最佳特性結合在一起的靜態(tài)類型編程語言(靜態(tài)語言需要提前編譯的如:Java、c、c++等,動態(tài)語言如:js)。Scala特點如下:1、Scala是一門多范式的編程語言,Scala支持面向對象和函數式編程。(多范式,就是多種編程方法的意思。有面向過程、面向對象、泛型、函數式四種程序設計方法。)2、Scala源代碼(.scala)會被編譯成Tava字節(jié)碼(.class),然后運行于JVM之上,并可以調用現有的Java類庫,實現兩種語言的無縫對接。3、Scala單作為一門語言來看,非常的簡潔高效。感謝大家的聆聽Scala環(huán)境準備目錄/Contents01
Windows下Scala安裝02
IDEA安裝Scala
Windows下Scala安裝01
Windows下Scala安裝在Scala官網(/)單擊DOWNLOAD進入下載頁面,目前最新的版本是2.13.1,考慮到版本的穩(wěn)定性和兼容性,本書選擇的是2.12.8(/download/2.12.8.html)
Windows下Scala安裝下載成功后解壓安裝包,并配置Scala的環(huán)境變量
Windows下Scala安裝環(huán)境變量配置完成后測試是否安裝成功。進入Windows命令行界面,輸入scala然后回車IDEA安裝Scala02IDEA安裝Scala目前主流的開發(fā)工具有Eclipse和IDEA兩種,在這兩個開發(fā)工具中可以安裝對應的Scala插件來進行Scala開發(fā)。現在大多數Scala開發(fā)程序員都會選擇IDEA作為開發(fā)Scala的工具。本書以Windows操作系統為例,講解如何在IDEA中下載安裝Scala插件。
Windows下Scala安裝(1)首先下載IDEA工具(/idea/download/other.html),本書選擇的版本是2018.2.5,然后打開安裝包進行安裝,具體的安裝步驟這里不做詳解。(2)打開IDEA安裝Scala插件。本書選擇的版本是2018.2.11(scala-intellij-bin-2018.2.11.zip),Scala的插件分為在線安裝與離線安裝,但是在線安裝很慢,所以建議下載后離線安裝。打開IDEA后點擊【File】下拉按鈕,然后選擇【Settings】,在彈出的對話框中點擊【Plugins】,然后點擊【InstallJetBrainsplugin】,在搜索框中輸入scala,點擊Scala,在對話框右邊出現該Intellij對應的Scala版本,從圖中看到對應的Scala版本是2018/9/5更新的。
Windows下Scala安裝在/plugin/1347-scala/versions找到Scala對應的版本,然后下載即可。
Windows下Scala安裝插件下載完成后點擊【Installpluginfromdisk】按鈕,選擇Scala插件所在的路徑,然后單擊ok。
Windows下Scala安裝插件安裝完成后需要重啟IDEA,Scala插件才會生效,單擊【Restart】重啟IDEA。感謝大家的聆聽Scala基礎語法目錄/Contents01
Scala數據類型02Scala變量03方法與函數Scala數據類型01Scala數據類型Scala中沒有基本數據類型的概念,所有的類型都是對象。Scala的數據類型和Java是類似的,所有Java的基本類型在scala包中都有對應的類,將Scala代碼編譯為Java字節(jié)碼時,Scala編譯器將盡可能使用Java的基本類型,從而提供基本類型的性能優(yōu)勢。Scala數據類型
AnyVal:所有值類型的父類型。包含Byte、Short、Int、Long、Float、Double、Char、Boolean、Unit。其中Unit類型用來標識過程,也就是沒有明確返回值的函數。由此可見,Unit類似于Java里的void。Unit只有一個實例,(),這個實例也沒有實質的意義。
AnyRef:Scala里所有引用類(referenceclass)的基類。與其他語言稍微有點不同的是,Scala還定義了底類型,分別是Nothing、Null。
Nothing:在Scala的類層級的最低端;它是任何其他類型的子類型,可以賦值給任何其他類型,用于異常,表明不正常的返回。
Null:所有引用類型的子類型,而Nothing是所有類型的子類型。Null類只有一個實例對象,null,類似于Java中的null引用。null可以賦值給任意引用類型,但是不能賦值給值類型。Scala變量02Scala變量Scala有兩種變量,val和var。val類似于Java里的final變量。一旦初始化了,val就不能再被賦值。相反,var如同Java里面的非final變量,可以在它的生命周期中被多次賦值。即,常量或變量。變量:在程序運行過程中其值可能發(fā)生改變的量叫做變量。如:時間,年齡。常量:在程序運行過程中其值不會發(fā)生變化的量叫做常量。如:數值3,字符'A'。Scala變量在Scala中,聲明變量使用關鍵詞“var”,實例如下:varmyVar:String="Foo"varmyVar:String="Too"在這里,myVar使用關鍵字var聲明。這意味著它是一個可以改變值的變量,被稱為可變變量。下面是使用val關鍵字來定義變量的語法:valmyVal:String="Foo"這里,myVal是使用關鍵字val聲明。這意味著,它是不能改變的變量,這是不可變變量。1.變量聲明Scala變量2.變量類型引用在Scala中聲明變量和常量不一定要指明數據類型,在沒有指明數據類型的情況下,其數據類型是通過變量或常量的初始值推斷出來的。所以,如果在沒有指明數據類型的情況下聲明變量或常量必須要給出其初始值,否則將會報錯。如下面的實例所示,myVar會被推斷為Int類型,myVal會被推斷為String類型。varmyVar=10valmyVal="Hello,Scala!"
方法與函數03Scala有方法與函數,二者在語義上的區(qū)別很小。Scala中的方法跟Java的類似,方法是組成類的一部分,而函數是一個對象可以賦值給一個變量。換句話來說在類中定義的函數即是方法。Scala中使用val語句可以定義函數,def語句定義方法。方法與函數方法與函數1.方法Scala方法聲明格式如下:deffunctionName([參數列表]):[returntype]如果你不寫等于號和方法主體,那么方法會被隱式聲明為抽象(abstract),包含它的類型于是也是一個抽象類型。Scala方法定義格式如下:deffunctionName([參數列表]):[returntype]={functionbodyreturn[expr]}方法定義由一個def關鍵字開始,緊接著是可選的參數列表,一個冒號:和方法的返回類型,一個等于號=,最后是方法的主體。以上代碼中returntype可以是任意合法的Scala數據類型。參數列表中的參數可以使用逗號分隔。如果方法沒有返回值,可以返回為Unit,這個類似于Java的void。2.函數在Scala中,由于使用def語句定義以及調用函數的格式均與方法一樣,因此,這里不做贅述。然而,Scala函數與Scala方法也是有區(qū)別的。具體如下:(1) 函數可作為一個參數傳入到方法中,而方法不行。(2) 在Scala中無法直接操作方法,如果要操作方法,必須先將其轉換成函數。(3) 函數必須要有參數列表,而方法可以沒有參數列表valfunctionName([參數列表]):[returntype]={functionbodyreturn[expr]}方法與函數方法與函數3.方法轉函數方法轉函數的格式如下:valf1=m1_在上面的格式中,方法名后面有一個空格和一個下劃線。神奇的下劃線將m1這個方法變成了函數,而方法名與下劃線之間至少有一個空格,沒有會報錯。感謝大家的聆聽Scala面向對象目錄/Contents01類和對象02繼承03單例對象和伴生對象類和對象01類和對象
類是對象的抽象,而對象是類的具體實例。類是抽象的,不占用內存,而對象是具體的,占用存儲空間。類是用于創(chuàng)建對象的藍圖,它是一個定義包括在特定類型的對象中的方法和變量的軟件模板。繼承02繼承Scala繼承一個基類跟Java很相似,但我們需要注意以下幾點:重寫一個非抽象方法必須使用override修飾符。只有主構造函數才可以往基類的構造函數里寫參數。在子類中重寫超類的抽象方法時,你不需要使用override關鍵字。單例對象和伴生對象03單例對象和伴生對象在Scala中,是沒有static這個東西的,所以不能像Java一樣直接用類名就可以訪問類中的方法和字段。但是它也為我們提供了單例模式的實現方法,那就是使用關鍵字object,使用關鍵字object創(chuàng)建對象就是單例對象。感謝大家的聆聽Scala基本數據結構目錄/Contents01數組02
元祖03集合
數組01
數組Scala提供了一種數據結構叫作數組,數組是一種存儲了相同類型元素的固定大小順序集合。數組用于存儲數據集合,但將數組視為相同類型變量的集合通常更為有用??梢月暶饕粋€數組變量,例如:numbers,使用numbers[0],numbers[1]和...,numbers[99]來表示單個變量,而不是分別地聲明每個變量,例如number0,number1,...等變量。本教程介紹如何使用索引變量聲明數組變量,創(chuàng)建數組和使用數組。數組的第一個元素的索引是數字0,最后一個元素的索引是元素的總數減去1。
數組1.數組的定義和使用在scala中數組有兩種:定長數組和變長數組。定長數組:由于Array是不可變的,初始化就有了固定的長度,所以不能直接對其元素進行刪除操作,也不能多增加元素,只能修改某個位置的元素值,要實現刪除可以通過過濾生成新的數組。所以也就沒有:add,insert,remove等操作。變長數組:ArrayBuffer是可變的,本身提供了很多元素的操作,當然包括增加,刪除操作。
數組2.數組的遍歷與Java一樣,如果想要獲取數組中的每一個元素,需要將數組進行遍歷操作。數組的遍歷分為for循環(huán)遍歷、while循環(huán)遍歷、do...while循環(huán)遍歷。下面是用for循環(huán)對數組進行遍歷。元祖02元祖元組也是可以理解為一個容器,可以存放各種相同或不同類型的數據。說的簡單點,就是將多個無關的數據封裝為一個整體,稱為元組。與列表一樣,元祖也是不可變的,但與列表不同的是元祖可以包含不同類型的元素,元祖的值是通過將不同的值包含在圓括號中構成的。1.元祖的創(chuàng)建2.訪問元祖中的元素訪問元祖的元素可以通過數字索引,我們可以使用t._1訪問第一個元素,使用t._2訪問第二個元素,依次類推。3.元素交換當元組中的元素為兩個時,可以通過Tuple.swap方法進行元素交換,生成新的元祖。原先的元祖不會被改變。集合03
集合(1)Scala的集合有三大類:序列Seq、集Set、映射Map,所有的集合都擴展自Iterable特質。(2)對于幾乎所有的集合類,Scala都同時提供了可變和不可變的版本,分別位于以下兩個包:不可變集合:scala.collection.immutable可變集合:scala.collection.mutable(3)Scala不可變集合,就是指該集合對象不可修改,每次修改就會返回一個新對象,而不會對原對象進行修改。類
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 煤炭洗選廢渣的高值化利用技術研究考核試卷
- 電池制造過程中的安全防護措施考核試卷
- 盾構機施工中的隧道工程地質適應性評價考核試卷
- 礦產預測與評價方法考核試卷
- 電力系統短路故障分析與處理考核試卷
- 礦物填料制造考核試卷
- 工程設計保證書
- 《杉木遺傳變異及綜合選擇研究》
- 《基于生態(tài)建筑節(jié)能技術的村鎮(zhèn)住宅節(jié)能設計研究》
- 2025版綜合交通樞紐施工履約保證金合同3篇
- 2024年廣東省汕尾市海豐縣六上數學期末教學質量檢測試題含解析
- 保安項目人員替換方案
- 國外合同協議書
- 癌癥患者生活質量量表EORTC-QLQ-C30
- 建筑工程技術專業(yè)《建筑工程質量與安全管理》課程標準
- 7.4 等差數列與等比數列的應用(課件)-【中職專用】高二數學(高教版2021·拓展模塊一下冊)
- TDT 1015.2-2024 地籍數據庫 第2部分:自然資源(正式版)
- 關于大數據的職業(yè)生涯規(guī)劃書課件
- 部編版高中語文必修上冊第二單元測試題及答案
- 電子化文件與信息管理制度
- 2024年高考地理試卷(浙江)(1月)(解析卷)
評論
0/150
提交評論