天天看點

2021年大資料常用語言Scala(十一):基礎文法學習 方法參數方法參數

方法參數

scala中的方法參數,使用比較靈活。它支援以下幾種類型的參數:

  • 預設參數
  • 帶名參數
  • 變長參數

預設參數

在定義方法時可以給參數定義一個預設值。

示例

定義一個計算兩個值相加的方法,這兩個值預設為0

調用該方法,不傳任何參數

參考代碼

// x,y帶有預設值為0 
def add(x:Int = 0, y:Int = 0) = x + y
add()           

複制

帶名參數

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

示例

定義一個計算兩個值相加的方法,這兩個值預設為0

調用該方法,隻設定第一個參數的值

參考代碼

def add(x:Int = 0, y:Int = 0) = x + y
add(x=1)           

複制

變長參數

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

文法格式:

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

    方法體

}

[!NOTE]

在參數類型後面加一個*号,表示參數可以是0個或者多個

示例

定義一個計算若幹個值相加的方法

調用方法,傳入以下資料:1,2,3,4,5

參考代碼

scala> def add(num:Int*) = num.sum
add: (num: Int*)Int

scala> add(1,2,3,4,5)
res1: Int = 15           

複制

其他:

  1. scala允許指定最後一個參數是可變長度的, 或者唯一一個參數
  2. 變長參數,在函數體内本質上是一個Array執行個體. 也就是除了例子裡面的sum 外, 我們也可以用for循環疊代它, 如:
scala> def add(x: Int*): Int = {
     | var result = 0
     | for(i <- x) result += i
     | result
     | }
add: (x: Int*)Int

scala> add(1, 2, 3)
res6: Int = 6           

複制

  1. 雖然它本質上是一個Array ,但是你不可以将Array對象傳遞給他, 如果要傳遞 需要傳遞如 array:_* 表明将每個元素傳遞給它 而不是整個數組對象
scala> add(ar:_*)
res8: Int = 15           

複制