從零開始學Scala,笑傲互聯網大數據時代!以Scala的開發環境的搭建爲開端,基於純粹動手實戰的原則,按部就班的覆蓋Scala基礎、Scala面向對象編程、Scala函數式編程、集合的操做深度實戰、Scala測試等實用實戰內容,是《Scala深刻淺出實戰中級---進階經典》和《Scala深刻淺出實戰高級---高手之巔》的前置課程。html
第1講:Scala開發環境搭建和HelloWorld解析
本視頻介紹了Scala語言的特性,Java的安裝,詳細介紹了Scala的下載、Scala的環境變量配置,ScalaIDE工具的安裝。在Scala的環境安裝完成後又動手演示了一個在ScalaIDE中創建Scala工程的例子,並演示運行結果。
第2講:Scala函數定義、流程控制、異常處理入門實戰
本視頻以具體的例子代碼詳細介紹了1)Scala中函數的定義格式,以main函數爲例介紹了main函數中的參數意義和返回值,同時還介紹了無參數函數的調用方式和有參數函數的調用方式。
2)介紹了Scala中流程控制do-while循環、for循環的使用方式。
3)Scala中的異常處理try-catch-finally的使用流程。
第3講:Tuple、Array、Map與文件操做入門實戰
本視頻以具體的例子代碼詳細介紹了
1)Scala中的元組的定義、元組的元素訪問方式。
2)Scala中數組的定義、數組的遍歷方式。
3)Scala中Map集合的定義和訪問方式。
4)Scala中網絡文件和本地文件的訪問方式。
第4講:For與Function進階實戰、Lazy的使用
本視頻以具體的例子代碼詳細介紹
1)雙重for循環的使用方式。
2)for循環中的守衛的使用方式。
3)函數做爲參數傳遞給另一個函數。
4)匿名函數的定義、匿名函數做爲。
5)函數的返回值。
6)遞歸調用中函數的使用方式。
7)函數中的默認參數。
8)可變參數的函數的定義和使用方式。
第5講:Scala數組操做實戰詳解
本視頻以具體的例子代碼詳細介紹了
1)固定長度數組的聲明與元素操做。
2)變長數組的聲明與元素操做。
3)數組的的各類操做方法:數組的增刪改查操做、數組的+=與++=操做、數組的yield操做、數組的過濾filter操做、數組的求和操做、數組的求最大值操做、 數組的升序sorted排序、數組的快速quickSort排序、數組的mkString操做、數組的矩陣ofDim操做。
第6講:Map、Tuple、Zip實戰解析
本視頻以具體的例子代碼詳細介紹了
1)可變Map集合的操做。
2)不可變Map集合的操做。
3)使用模式匹配獲取Map集合的元素。
4)使用getOrElse方法獲取 Map集合的元素。
5)使用+=爲Map集合添加元素。
6)使用-=刪除Map集合的元素。
7)使用SortedMap給Map集合的元素排序。
8)使用模式匹配訪問元組中的值。
9)使用partition方法將一個字符串拆分紅一個元組。
10)使用數組的zip方法將兩個數組中的元素進行壓縮組裝成新的數組。
第7講:Scala類的屬性和對象私有字段實戰詳解
本視頻以具體的例子代碼詳細介紹了:
1)Scala類的實現和使用。
2)Scala類中用var關鍵字修飾的屬性(或者稱字段)自動帶有getter方法和setter方法。
3)Scala類中用val關鍵字修飾的屬性只帶getter方法。4)最後着重介紹了Scala類的對象私有字段,該特性在用Scala語言編寫的大數據計算框架Spark源代碼中常常用到。
第8講:Scala主構造器、私有構造器、構造器重載實戰詳解
本視頻以具體的例子代碼詳細介紹了:
1)Scala類的主構造器的定義以及如何讓主構造器變成私有的。
2)除了主構造器,Scala類還有任意多的輔助構造器,輔助構造器是如何定義和使用的。
3)和Java語言有多個構造方法同樣,Scala類的構造器是能夠經過重載實現多個構造器,固然其中只有一個是主構造器。對於輔助構造器的使用而言,都是在對其餘先前定義的輔助構造器和主構造器進行調用開始的。
第9講:Scala的內部類實戰詳解
本視頻以具體的例子代碼詳細介紹了Scala的內部類,Java語言的內部類和Scala語言的內部類有本質的區別,Java語言的內部類是從屬於外部類的,而Scala語言的內部類是從屬於外部類的每一個具體實例對象的。
第10講:Scala單例對象、伴生對象實戰詳解
本視頻以具體的例子代碼詳細介紹了Scala語言的單例對象和伴生對象: (1)與Java語言中有靜態方法和靜態屬性(字段)不一樣,Scala語言是通過提供object關鍵字修飾的單例對象達到此目的,也就是說在Scala語言的單例對象.
第11講:Scala中的apply實戰詳解
本視頻以具體的例子代碼詳細介紹了Scala語言的很是重要的apply方法的定義和使用:
(1)對於apply方法而言,它能夠是伴生類中的apply方法,也能夠是伴生對象中的apply方法,咱們一般使用的就經過伴生對象中的apply方法來實例化它的伴生類。
(2)針對apply方法在伴生對象和伴生類中如何使用,咱們經過代碼進行了演示,並查看了Scala源碼中的伴生對象Array是如何經過apply方法來實例化它的伴生對象的。
(3)最後特別列舉了大數據計算框架Spark中的圖計算部分(Spark GraphX),在構造一個圖的時候(圖是用Graph這個抽象類表示的),一種方法是經過使用Graph類的伴生對象的apply方法來實現的,而在這個apply方法中,其實是new了一個Graph抽象類的子類 GraphImpl的實例。
第12講:Scala中的繼承:超類的構造、重寫字段、重寫方法實戰
本視頻以具體的例子代碼詳細介紹了Scala語言的很是重要的繼承特性: (1)與Java語言同樣,Scala語言也是使用extends關鍵字實現子類對父類的繼承。
(2)子類中的方法和字段可使用 override 關鍵字實現對它的超類(父類)中同名的方法或字段進行覆寫(重寫)。
(3)當子類使用主構造器進行實例化時,與父類的主構造器中同名的參數也會直接傳遞具體的參數值給父類使用。
第13講:抽象類、抽象字段、抽象方法
本視頻以具體的例子代碼詳細介紹了Scala語言中抽象類、抽象字段和抽象方法的定義和使用:
(1)與Java語言同樣,Scala中的抽象類也是使用 abstract 關鍵字修飾的。
(2)抽象字段和抽象方法都是隻有字段或者方法的定義,而沒有字段或者方法的具體實現。
第14講:Scala中做爲接口的trait、在對象中混入trait代碼
本視頻以具體的例子代碼詳細介紹了Scala語言中trait的定義和使用: (1)與Java語言中的接口(interface)中只含有抽象方法不一樣,Scala語言中的特質(trait)能夠包含抽象字段、抽象方法或者實現了方法體的方法。
(2)在使用Scala語言構建對象時,能夠爲該對象添加特質。
第15講:Scala多重繼承、多重繼承構造器執行順序及AOP實現
本視頻以具體的例子代碼詳細介紹了Scala語言的多重繼承、多重繼承構造器執行順序及AOP實現:
(1)多重繼承的trait代碼實戰;
(2)多重繼承構造器執行順序;
(3)基於trait的AOP代碼實戰。
第16講:Scala中包的定義、包對象、包的引用、包的隱式引用實戰
本視頻以具體的例子代碼詳細介紹了Scala語言中包的定義、包對象、包的引用、包的隱式引用: (1)與在Java中同樣,在Scala語言中,也能夠經過包來組織大型工程(項目)。在Scala中,能夠經過鏈式和嵌套來實現包的定義。 (2)藉助包對象能夠把工具函數或者常量添加到包而不是某個工具對象中。 (3)Scala語言中能夠在任何地方聲明引用,並能夠對引用進行重命名。同時在Scala程序中都隱式引用了三個包:import java.lang._ 、import scala._ 、import Predef._
第17講:Scala中包、類、對象、成員、伴生類、伴生對象訪問權限
本視頻以具體的例子代碼詳細介紹了Scala語言中包、類、對象、成員、伴生類、伴生對象訪問權限:
(1)在Scala語言中,能夠經過 private[包名] 這個修飾符來擴展包、類等的訪問權限。
(2)在Scala中,private[this] 這個修飾符修飾的成員是對象私有的,這樣即便是同一個類的不一樣對象也不能夠訪問對方的成員。
(3)在伴生對象和伴生類中,能夠訪問彼此的私有成員。
第18講:Scala中文件的讀取、寫入、控制檯輸入操做代碼實戰
本視頻以具體的例子代碼詳細介紹了Scala語言中文件的讀取、寫入、控制臺輸入操做代碼實戰:
(1)經過Source.fromFile( )方法讀取本地文件;
(2)經過Source.fromURL( )方法讀取網絡文件;
(3)經過使用Java語言的PrintWriter類寫入內容到本地文件;
(4)經過Console.readLine方法從控制檯輸入內容。
第19講:Scala中的正則表達式、與模式匹配結合的的Reg代碼實戰
本視頻以具體的例子代碼詳細介紹了Scala語言的正則表達式、與模式匹配結合的的正則表達式:
(1)在Scala中,與正則表達式相關的類是scala.util.matching.Regex類。要構造一個Regex對象,使用String類的r方法便可。若是正則表達式中包含反斜槓或引號之類的須要轉義的字符,那麼最好是使用原始(raw)字符串,以三個 」 號包圍。
(2)使用Regex對象的findAllIn( )方法能夠返回全部匹配項的迭代器;使用Regex對象的findFirstIn( )方法能夠找到Regex的首個匹配項。
(3)正則表達式和模式匹配的結合造成正則表達式組。分組可使得獲取正則表達式的子表達式更加方便。在想要提取的子表達式兩側加上圓括號,匹配組將正則表達式(Regex)對象當作「提取器」來使用。
第20講:Scala中的本地函數與做爲語言一等公民的函數詳解
本視頻以具體的例子代碼詳細介紹了Scala語言的本地函數與做爲語言一等公民的函數:
(1)在Scala中,函數是一等公民,能夠在變量中存放函數,做爲值的函數。
(2)在Scala中,不須要給每個函數命名,這種不須要命名的函數,稱爲匿名函數。
(3)在Scala 中,能夠在函數內部定義函數,這種定義在函數內部的函數能夠成爲本地函。
第21講:Scala中的偏函數實戰詳解
本視頻以具體的例子代碼詳細介紹了Scala語言的偏函數:(1)在Scala中,偏函數是具備類型PartialFunction[-A,+B]的一種函數。A是其接受的函數類型,B是其返回的結果類型。偏函數最大的特色就是它只接受和處理其參數定義域的一個子集,而對於這個子集以外的參數則拋出運行時異常。
(2)偏函數是一種表達式,你不須要提供函數須要的全部參數。代之以僅提供部分,或不提供所需參數。好比,要建立不提供任何三個所需參數的調用sum方法(「def sum(a: Int, b: Int, c: Int) = a + b + c」)的偏應用表達式,只要在「sum」以後放一個下劃線便可。而後能夠把獲得的函數存入變量。
第22講:Scala中的閉包實戰詳解
本視頻以具體的例子代碼詳細介紹了Scala語言的閉包:在Scala中,你可以在任何做用域內定義函數:包、類甚至是另外一個函數或方法。在函數體內,你能夠訪問到相應做用域內的任何變量。同時你的函數能夠在變量不再處於做用域內時被調用,這樣的一個函數被稱爲閉包(closure)。
第23講:Scala高階函數實戰詳解
本視頻以具體的例子代碼詳細介紹了Scala語言的高階函數:
(1)因爲Scala語言中混合了面向對象和函數式編程的特性,因此在Scala語言中,函數能夠像任何其餘數據類型同樣被傳遞和操做。
(2)要熟悉高階函數,本視頻經過練習使用Scala集合庫的一些經常使用的接受函數參數的方法(map方法、filter方法、reduceLeft方法、split方法和sortWith方法等)來具體演示。
(3)把函數(包括匿名函數)做爲值(或者稱爲值函數)傳遞給Scala集合的經常使用方法的參數來對集合中的每個元素進行計算是Scala語言中常見的操做方式。
第24講:Scala中SAM轉換實戰詳解
在Scala中,當須要告訴另外一個函數作某件事的時候,會傳一個函數參數給它,而且這個函數參數經過Scala語言的隱式轉換把這個函數參數轉換爲一個包含了具體的動做方法的對象實例來實現。
第25講:Scala中Curring實戰詳解_controller
柯里化(Curring)指的是將原來接受兩個參數的函數變成新的接受一個參數的函數的過程,新的函數返回一個以原有第二個參數做爲參數的函數。
第26講:Scala中模式匹配入門實戰詳解
本視頻以具體的例子代碼詳細介紹了Scala語言模式匹配的入門:
(1)match/case模式匹配。
(2)帶條件表達式的模式匹配。
(3)Foreach迭代器中模式匹配的使用方式。
第27講:Type、Array、List、Tuple模式匹配實戰解析
本視頻以具體的例子代碼詳細介紹了Scala語言的Type、Array、List、Tuple模式匹配實戰:
(1)type模式匹配,以對函數的參數類型的判斷爲例。
(2)Array模式匹配,以對數組中的元素的個數的判斷爲例。
(3)List模式匹配,以右結合操做符爲例。
(4)Tuple模式匹配,以元組中對特定位置的元素的判斷爲例。
第28講:Scala提取器Extractor實戰詳解
本視頻以具體的例子代碼詳細介紹了Scala語言的提取器Extractor:
(1)數組中對元素的提取。
(2)正則表達式中的提取器。
(3)提取器的背後原理。
(4)提取器的unapplySeq源碼解析。
第29講:Case class和Case object代碼實戰解析
本視頻以具體的例子代碼詳細介紹了Scala語言的Case class和Case object代碼實戰:
(1)Case class 和 Case object的常見用途:這是Scala爲咱們優化的語言特性,經常使用於傳遞消息和模式匹配。
(2)Scala 爲 Case class 所作的優化:1)添加與類名一致的工廠方法(對應伴生對象的apply方法)、模式匹配中經常使用的抽取器(對應伴生對象的unapply方法);2)參數列表中的全部參數隱式得到了val 前綴,被當作字段保護,而且是不可變的(因爲變量的不可變特性,在分佈式消息通信中的使用更普遍);3)爲類添加了諸如toString,hashCode,equals和copy等方法。
(3)介紹了Case class 和 Case object在模式匹配中使用的幾種模式,包括:1)常量模式(Case Object 單例對象能夠視做常量);2)構造器模式;3)通配模式等
第30講:模式匹配高級實戰:嵌套的Case class
本視頻以具體的例子代碼詳細介紹了Scala語言嵌套的Case class:
(1)介紹嵌套的Case class在模式匹配中很是重要的一個應用場景:以Case class做爲元素的集合的模式匹配。
(2)利用模式匹配中經常使用的匹配模式,序列模式講解嵌套Case Class的應用實戰。
(3)經過模式匹配中的變量綁定,講解嵌套Case Class的應用實戰。
第31講:Option使用和實現內幕源碼揭祕
本視頻以具體的例子代碼詳細介紹了Scala語言Option使用和實現內幕:
(1)從Option的實戰入手解析其內部實現。
(2)Option的源碼解析 : 着重解析 sealed關鍵字的含義及其做用,sealed關鍵字的做用主要有:1)sealed關鍵字能夠限制繼承子類必須在同一個文件中;2)用於模式匹配時,編譯器會幫咱們檢查是否全部的匹配子項都已經列在case中,避免出現 MatchError的異常。
(3)給出Option在實際應用中的一個常見案例 。
第32講:List的基本操做實戰與基於模式匹配的List排序算法實現
本視頻以具體的例子代碼詳細介紹了Scala語言中List的基本操做實戰與基於模式匹配的List排序算法實現:
(1)List的定義有兩種方式:一種經過apply()方法的方式定義,一種是經過" :: "(兩個冒號的方式)來生成List集合;
(2)接下來說解了List的一些常見的操做方法,像isEmpty方法、head方法、tail方法等;
(3)最後用一個sortList()方法的代碼實例來說解基於模式匹配的List排
序算法實現。
第33講:List的一階函數操做代碼實戰詳解
本視頻以具體的例子代碼詳細介紹了Scala語言中List的一階函數操做:
(1)List的drop、take、splitAt、apply、indices、toString、
mkString等方法的實戰操做;
(2)List的toIterator,toArray,copyToArray等方法的實戰操做。
第34講:對List進行高效的排序和倒排序代碼實戰
本視頻以具體的例子代碼詳細介紹了Scala語言風格的歸併排序,所謂Scala的風格,在本例中用到了Scala語言的模式匹配、柯里化以及做爲函數參數的值函數等知識點。歸併排序是創建在歸併操做上的一種有效的排序算法。該算法是採用分治法(Divide and Conquer)的一個很是典型的應用。 將已有序的子序列合併,獲得徹底有序的序列;即先使每一個子序列有序,再使子序列段間有序。若將兩個有序表合併成一個有序表,稱爲2-路歸併。
第35講:List的map、flatMap、foreach等操做
本視頻以具體的例子代碼詳細介紹了Scala語言中List常見的一些方法(函數)操做:map、flatMap、foreach、filter操做。
第36講:List的partition、takeWhile等操做
本視頻一樣以具體的例子代碼詳細介紹了Scala語言中List常見的一些方法操做:partition、find、takeWhile、dropWhile、span、forall、exsists等方法操做
第37講:List的foldLeft、foldRight、sort操做代碼實戰
本視頻以具體的例子代碼詳細介紹了Scala語言中List常見的一些方法(函數)操做:foldLeft、foldRight、sort等方法操做代碼實戰。
第38講:List伴生對象操做方法代碼實戰
本視頻以具體的例子代碼詳細介紹了Scala語言中List伴生對象的常見操做方法,具體的方法有:apply、make、range、unzip、flatten、contact、map2等操做方法。
第39講:ListBuffer、ArrayBuffer、Queue、Stack操做代碼實戰
ListBuffer和ArrayBuffer分別是List、Array的新的版本,Queue和Stack是兩種經典的數據結構。本視頻以具體的例子代碼詳細介紹了Scala語言中ListBuffer、ArrayBuffer、Queue、Stack的操做實現。
第40講:Set、Map、TreeSet、TreeMap操做代碼實戰
Set、Map、TreeSet、TreeMap操做代碼實戰。
第41講:List繼承體系實現內幕和方法操做源碼揭祕
本視頻以具體的例子代碼詳細介紹了Scala語言中:
(1)List的繼承體系分析和源碼解讀;
(2)List方法操做源碼解讀實戰。
採用按部就班的實戰方式,深刻淺出的講解Scala全部核心內容和高級實戰技巧,課程地址:http://edu.51cto.com/course/course_id-3945.html趕忙來學習吧!java