大數據 -- Scala:方法、函數、數組、元組

1、方法

1)語法:

def methodName (參數名:參數類型, 參數名:參數類型) : [return type] = {
    // 方法體:一系列的代碼
}

- 參數列表的參數類型不能省略
- 返回值類型可以省略,由scala編譯器自動推斷
- 返回值可以不寫return,默認就是{}塊表達式的值

注意:如果定義遞歸方法,不能省略返回值類型

遞歸方法:求階乘  10*9*8*..*1

2)方法的參數

默認參數:

在定義方法時可以給參數定義一個默認值

帶名參數:

在調用方法時,可以指定參數的名稱來調用

變長參數://在參數類型後面加一個*號,表示參數可以是0個或者多個

如果方法的參數是不固定的,可以定義一個方法的參數是變長參數

格式:

def 方法名(參數名:參數類型*):返回值類型 = {
    方法體
}

2、函數

scala支持函數式編程,將來編寫Spark/Flink程序中,會大量使用到函數

語法:val 函數變量名 = (參數名:參數類型, 參數名:參數類型....) => 函數體

注意:

函數是一個對象(變量)

相同點:類似於方法,函數也有輸入參數和返回值

區別:函數定義不需要使用def定義  ;  無須指定返回值類型

 

匿名函數

一個函數沒有賦予一個變量,則稱爲匿名函數
後期再實際開發代碼的時候,基本上都是使用匿名函數
(x:Int,y:Int)=>x+y

方法和函數的區別:

方法是隸屬於類或者對象的,在運行時,他是加載到JVM的方法區中

可以將函數對象賦值給一個變量,在運行時,他是加載到JVM的堆內存中

函數是一個對象,繼承自FunctionN , 函數對象有apply , curried  , toString  , tupled 這些方法,而方法沒有

方法轉換爲函數:

有時候需要將方法轉換爲函數,作爲變量傳遞,就需要將方法轉換爲函數  ??

使用 “_”  即可將方法轉換爲函數  

3、數組

Scala中數組的概念是和java類似的,可以用數組來存放一組數據

Scala 中,有兩種數組,一種是定長數組,另一種是變長數組  

定長數組:

定義:指的是數組的長度不允許改變

數組的元素是可以改變的

語法:

// 通過指定長度定義數組
val/var 變量名 = new Array[元素類型](數組長度)

// 用元素直接初始化數組
val/var 變量名 = Array(元素1, 元素2, 元素3...)

注意:

在scala中,數組的泛型使用[]來指定   new Array[Int](10)
使用()來獲取元素  a(0)

變長數組:

定義:

指的是數組的長度是可以改變的,可以往數組添加、刪除元素

創建變長數組,需要提前導入ArrayBuffer類 

import scala.collection.mutable.ArrayBuffer

語法:

創建空的ArrayBuffer變長數組   val/var a = ArrayBuffer[元素類型]()

創建帶有初始元素的ArrayBuffer   val/var a = ArrayBuffer(元素1,元素2,元素3....)

變長數組的增刪改操作:

使用+=添加元素

使用-=刪除元素

使用++=追加一個數組到變長數組

遍歷數組:

  • 使用   for表達式   直接遍歷數組中的元素

  • 使用    索引     遍歷數組中的元素

注意:

//0 until n ——生成一系列的數字,包含0,不包含n
//0 to n    ——包含0,也包含n

數組常用操作:

  • 求和——sum方法

  • 求最大值——max方法

  • 求最小值——min方法

  • 排序——sorted方法

4、元組

元組可以用來包含一組不同類型的值,例如用戶的個人信息,包括姓名、性別、年齡 等 。

元組的元素是不可變的

定義元組:

  • 使用括號來定義元組     val/var 元組變量名稱 = (元素1, 元素2, 元素3....)
  • 使用箭頭來定義元素(元組只有兩個元素) val/var 元組 = 元素1->元素2

訪問元組:

_1 ,  _2  , _3 ,  .....       來訪問元組中的元素,_1表示訪問第一個元素,依次類推


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章