方法參數
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
複制
其他:
- scala允許指定最後一個參數是可變長度的, 或者唯一一個參數
- 變長參數,在函數體内本質上是一個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
複制
- 雖然它本質上是一個Array ,但是你不可以将Array對象傳遞給他, 如果要傳遞 需要傳遞如 array:_* 表明将每個元素傳遞給它 而不是整個數組對象
scala> add(ar:_*)
res8: Int = 15
複制