函數式編程的核心特點之一是把函數做爲參數傳遞給函數、在函數內部能夠定義函數等。 編程
1,動手實戰Scala高階函數app
聲明一個List集合實例:函數式編程
List集合所在的包已經被預約義自動導入,因此此處不須要導入包,同時,這裏直接使用List實例化對象,實際上是用來List的object對象的apply方法;函數
咱們使用map函數把List中的每一個值都乘以2:學習
在上面的代碼中,x表示l中每一個一個元素,map對l中的每個元素進行遍歷操做,因爲List中只有一種類型的元素,因此咱們在執行map操做的時候能夠省略掉其類型,以下所示:spa
List集合中只有一個參數的時候,咱們能夠去掉參數中的括號:命令行
在只有一個參數的狀況下,更簡潔和正常的寫法以下所示:對象
經常使用的高階函數有map、filter、reduce等,咱們在稍後會作介紹。ip
2,動手實戰Scala中的集合源碼
集合主要有List、Set、Tuple、Map等,咱們下面以動手實戰的方式來學習。
咱們在Eclipse這個IDE中建立一個List實例:
此時咱們看一下其代碼實現:
源代碼中說明了其內部是apply的方式來完成實例化的;
一樣的方式咱們能夠實例化Set:
此時也能夠看一下Set實例化對象的實現:
接下來咱們在命令行終端中看一下集合的操做,首先看一下Set:
能夠發現Set中不會存在重複的元素。
下面看一下Tuple的聲明和使用:
從上述代碼中能夠看出源碼訪問的時候下標是從1開始的;
對Tuple而言,若是隻有兩個元素的時候還可使用下述方式建立:
接下來看一下Map的定義:
Map自己使用的是可變參數的方式,因此能夠給Map賦多個值:
下面看一下Option類型,Option表明了一個無關緊要的值:
Option有兩個子類:Some和None,下面咱們看Option的使用:
接下來看一下filter的處理:
下面看一下對集合的zip操做:
下面看一下partition對集合的切割操做:
咱們可使用flatten的多集合進行扁平化操做:
flatMap是map和flatten操做的結合,先進行map操做而後進行flatten操做: