【Spark亞太研究院系列叢書】Spark實戰高手之路-第2章動手實戰Scala第3小節(1)

函數式編程的核心特點之一是把函數做爲參數傳遞給函數、在函數內部能夠定義函數等。 編程

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操做:

相關文章
相關標籤/搜索