Scala學習四: 函數
Scala函數
Scala中定義函數只需要給出:
def 函數名(參數):返回值類型(可省略)= (可省略) {
函數體
}
函數返回值類型:Scala編譯器可以通過 “=右邊” 的表達式類型推斷出返回類型.
def funA(a:Int) = {
if (a > 0) {
1
} else {
-1
}
}
// 注意遞推函數必須聲名返回值類型.
def fac(n:Int):Int = {
if ( n < 0 ) {
1
} else {
n * fac(n-1)
}
}
Scala中的函數可以 省略返回語句 return,語句塊最後一語句就是函數的返回值。
如果函數聲名後 沒有等號“=”,則函數返回值一定是Unit。
def funUnit(ars: Int) {
val value = if (ars > 0) {
1
} else {
-1
}
println("value = " + value)
}
函數的參數:
Scala 中的函數可以指定默認值,或者默認參數
正確的用法:
def defaultVal(value:Int, left:String = "[", right:String = "]"):Unit = {
println(left + value + right)
}
錯誤的用法:
def defaultVal(value:Int, left = "[", right = "]"):Unit = {
println(left + value + right)
}
Scala中 默認值參數必須得有類型聲名。
調用方式: defaultVal(“Hello”,”{{“,”}}”)
如果參數不夠:defaultVal(“Hello”,”{{“)),則 默認參數會從後往前逐個應用進來,也就是說,從左向右依次 替換掉默認值.
Scala 調用函數時,如果指名了 調用的參數名稱,調用函數時不用 按照參數 聲名時順序,即:
defaultVal("Hello",right=">>>")