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表示訪問第一個元素,依次類推