chapter2-林子雨大數據處理技術spark第2章scala語言基礎2017年春季學期_第1頁
chapter2-林子雨大數據處理技術spark第2章scala語言基礎2017年春季學期_第2頁
chapter2-林子雨大數據處理技術spark第2章scala語言基礎2017年春季學期_第3頁
chapter2-林子雨大數據處理技術spark第2章scala語言基礎2017年春季學期_第4頁
chapter2-林子雨大數據處理技術spark第2章scala語言基礎2017年春季學期_第5頁
免費預覽已結束,剩余137頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

/溫馨提示:編輯幻燈片母版,可以修改每頁PPT的廈大校徽和底部文第2章/溫馨提示:編輯幻燈片母版,可以修改每頁PPT的廈大校徽和底部文第2章Scala語言基(PPT版本號:2017年春季學期:20172.1Scala2.1Scala2.2Scala2.3 象編程基2.4免 2.1Scala計2.1Scala計算機的緣編程范Scala簡.1 (AlonzoChurch)設計了“λ演算”,這2.1.1英國數學2.1.1英國數學 ·圖靈采用了完全不同的設計思路,.1 (JohnVon 提出了在數字計算 .2 .2 2.1.3Scala2.1.3Scala 象的語2.1.4Scala2.1.4Scala所有的操作系統都可以運行Scala程序,包括Window、Linux、UnixMac安裝安裝使用Scala第1個Scala程序 具體可以參照廈門大學數據 博客 安裝安裝OpenJDK安裝安裝 使用Scala使用Scala在 命令提示符界面中輸入“scala”命令后,會進入scala命令行提示符狀態第1個第1個Scala程序 注意,上面命令中一定要加入"-classpath,否則會出現“Nosuchfileclasson 2.2Scala2.2Scala 象編程基.1 小技巧:如何在Scala 小技巧:如何在ScalaScala的數據類型包括:Scala的數據類型包括:Byte、Char、Short、、Long、Float、Double成員,比如,的全名是scala.。對于字符串,Scala用java.lang.String字面量字面量操作符:在操作符:在Scala中,可以使用加(+)、減、乘(*)、除(/)、余數(%)等操作符,而且,這些操作符就是方法。例如,53和(5).+(3)前者是后者的簡寫形式,這里的+是方法名,是類中的一個方法。對于基本數據類型,除了以上提到的符外,對于基本數據類型,除了以上提到的符外,Scala每個基本類型都有一個對應的富包裝類,例如有一個 型,然后再調用相應的方法。例如:3max ?Range可以支持創建不同數據類型的數值序列,包括、 readFloat、readLong、readCharread f()函 f()都在對象Predef中定義,該對象默 如 想把文件保存到一個指定的目錄下,就需要給出文件路Scala不支持Scala不支持Java中的“受檢查異常”(checkedexception),importimportimporttryvalf=new文件操}catchcaseex:FileNotFoundException文件不存在時的操caseex:IOException發生I/O錯誤時的操}finallyfile.close()確保關閉文}2.2.2if2.2.2ifforififwhilewhileforfor forforforfor for可以給每for可以給每 都添加一個“守衛”,如下forforforfor集合的類型由中的集合類型確定for(變量表達式yield語句塊2.2.3容器2.2.3容器集合迭代器元組容器容器 (Map)?Scala用了三個包來組織容器類,分別是scala.collection容器容器容器容器容器容器列表列表Scala的List定義在 var 列表列表val List= 與 List=List(1,2,3)等集合集合 varmySet=mySet+=如果 importvalmyMutableSet=myMutableSet+="Cloud (Map)是一系列鍵值對的容器。在一個中,鍵是和集合一樣,Scala scala.collection.mutable和scala.collection.immutable里。 iversity=Map("XMU"->"Xia "THU"->"TsinghuaUniversity","PKU"->"Peking 如果要獲 中的值,可以通過鍵來獲 也可以使用+= 或者,也可以只遍 中的k或者迭代器迭代器 迭代器迭代器scala>valxs=List(1,2,3,4,xs: ]=List(1,2,3,4,scala>valgit=xsgroupedgit:Iterator[List[ ]]=non-emptyiteratorscala>git.next()res3:List[ ]=List(1,2,3)scala>git.next()res4:List[ ]=List(4,5)scala>valsit=xssliding3sit:Iterator[List[ ]]=non-emptyiteratorscala>sit.next()res5:List[ ]=List(1,2,3)scala>sit.next()res6: ]=List(2,3,scala>res7: ]=List(3,4,數組數組數組數組valmyMatrix= ](3,4)//類型實際就是 valmyCube=Array.ofDim[String](3,2,4)//類型實際是 數組數組importscala.collection.mutable.ArrayBuffervalaMutableArr=ArrayBuffer(10,20,30)aMutableArr+=40aMutableArr.insert(2,aMutableArr-=var元組元組 個元素必須是相同類型,而元組可以包含不同類型的元2.3 2.3 類對繼特模式匹.下下 新建對象,并調用其中的方法在Linux 進入scala 原因 都沒有被封裝在對象中,因此,無法編譯JVM$scalac$scalaclasspathMyCounter//MyCounter是包含main方法的對象名稱,這里不能使用文件 參數 getter和settergetter和setter給類中的字段設置值以 getter和settergetter和setter “error:variablevalueinclassCountercannotbeac inCounter”這樣的錯getter和settergetter和setter下面定義一個帶有輔助構造器的類 (代碼續上一頁(代碼續上一頁 .在 實際上就實現了Java中靜態(sic)員成了實例成員,object成員成了sic成員為了驗證這一點為了驗證這一點 可以一起測試一下那就是把 在在 命令提示符狀態下,輸入以下命令編譯并執行 忽 為了運行上述代碼 現在可以使用兩種不同的方法 apply方法和updateapply方法和update 用括號傳遞給變量(對象)一個或多個參數時,Scalaapply方法和updateapply方法和update apply方法和updateapply方法和update方法,并且把“ZhangfeiandLiubei”作為返回值,賦值給group變量,因此,prln(group)語句會打印出“ZhangfeiandLiubei”。apply方法和updateapply方法和update下 apply方法和updateapply方法和update從上面代碼可以看出,當執行valaApplyTest()時,會導致apply方法的又會導致調用伴生類的apply方法,如果愿意,就可以在伴生類的apply方apply方法和updateapply方法和update apply方法和updateapply方法和update.Scala與JavaScala與Java以汽車為例子,首以汽車為例子,首 創建一個抽象類,讓這個抽象類被其他類繼承但是,抽象字段必須 類型,比如:valcarBrand:String,就把 下面下面 在在 2.3.4特質2.3.4特質特質的定義和類的定義非常相似,有區別的是,特質定義使用關鍵字trait特質的定義和類的定義非常相似,有區別的是,特質定義使用關鍵字trait下面 2.3.5簡單2.3.5簡單匹類型模"守衛(guard)"語for表達式中的模case類的匹Option類"守衛(guard)""守衛(guard)"forfor 之前舉過 為例子 創建 如下循環遍 的基本格式是casecaseOptionOption一般而言,對于每種語來說都會一個鍵字表示個對引用的是無,Jaa中用的l。Scala融合了函數式程格因此,當預計到變量或函數回值能不會 何值時候建議你使Option類型。 Option下Option下 給出一個實例OptionOption 指定的“NoSuchBook”,而不是顯示None。OptionOptionOption[T]類型,其中的T可以是Sting或或其他各種數據類型。 既然是一個集合 2.42.4函數式編程實例2.4.1函數2.4.1函數字面函數的類型和函數、Lamda表達式與閉占位符語 除了函數字面 會比較陌生以外,其他幾種字面量都很容易理解函數字面量可以體現函數式編程函數字面量可以體現函數式編程 理念 下面下面現在定義一個大家比較熟悉的傳統類型的函數,定義的語法和之前介紹 一個變量時 采用的形式是照葫蘆畫瓢 不需要給每個函數命名,這時就可以使 函數,如下 “=> 下 不會報錯,因為,給出了myNumFunc的類型為“=> 以推斷出num類型為類型。 每個閉包都 閉包創建時活躍 失的參數類型。例如,假設你只是寫_+_: 失的參數類型。例如,假設你只是寫_+_: _+_將擴展成帶兩個參數的函數字面量。這也是僅當每個參數在函數 .2filterreducefold循環遍循環遍 ,是經常需要用到的操作,基本格式是 的遍map操作和flatMapmap操作和flatMapmapmap操作和flatMapmap操作和flatMapflatMapflatMap是map的一種擴展。在flatMap中,會傳入一個函數,該函數filterfilter首先創建一 iversity=Map("XMU"->"Xia niversity","THU"->"TsinghuaUniversity","PKU"->"PekingUniversity","XMUT"->"Xia niversityofTechnology") iversityOfXiamen=universityfilter{kv=>kv._2contains iversityOfP=universityfilter{kv=>kv._2startsWithreducereducereduceLeft(_+_)整個加法 reduceRight(_+_)表示從列表尾部開始, foldfold 2.4.3函數式編程實例2.4.3函數式編程實例 委員,中國計算機學會信息 數據創新百人”稱號。中國高校首個“數字教師”提出者和建設者,廈門大學數 主要建設者和骨干成員,2013年度廈門大學獎教金獲得者。主要研 學報》《計算機學報》 主持的科研項目包括1 高校基本科 應用示 市工作方案、市互聯網經濟調研等課題。中國高校首個“數字教師”提出者和建設者 《大數據技術原理與 ,為教師教學和學生學習大 委員,中國計算機學會信息 數據創新百人”稱號。中國高校首個“數字教師”提出者和建設者,廈門大學數 主要建設者和骨干成員,2013年度廈門大學獎教金獲得者。主要研 學報》《計算機學報》 主持的科研項目包括1 高校基本科 應用示 市工作方案、市互聯網經濟調研等課題。中國高校首個“數字教師”提出者和建設者 《大數據技術原理與 ,為教師教學和學生學習大 、浙江省中小 瀘州企業家、江蘇沛縣企業家等開展信息化培訓,累計培訓人數達3000人

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論