函式是一組執行的語句。您可以將程式碼按功能分成一個個單獨的函式。 如何在不同函式之間劃分你的程式碼取決於你,但從邏輯上講,通常每個函式執行一個特定的任務。
Scala具有兩種函式,術語 - 方法和函式是可以互換的。 Scala方法是具有名稱,簽名,可選地一些註釋和一些位元組碼的類的一部分,作為Scala中的函式是可以分配給變數的完整物件。 換句話說,定義為某個物件的成員的函式稱為方法。
函式定義可以出現在原始檔的任何位置,Scala允許巢狀函式定義,也就是其他函式定義中的函式定義。有一點要注意的是,Scala函式的名稱可以包含符號,如:+
,++
,~
,&
,-
, --
,\
,/
,:
等的字元。
Scala函式宣告具有以下形式 -
def functionName ([list of parameters]) : [return type]
如果不使用等號和方法體,則隱式宣告抽象(abstract
)方法。
Scala函式定義具有以下形式 -
語法
def functionName ([list of parameters]) : [return type] = {
function body
return [expr]
}
這裡,返回型別可以是任何有效的Scala資料型別,引數列表將是由逗號分隔的變數列表,引數列表和返回型別是可選的。與Java非常相似,返回語句可以與表示式一起使用,以防函式返回值。 以下是將兩個整數相加並返回其總和的函式,
語法
object add {
def addInt( a:Int, b:Int ) : Int = {
var sum:Int = 0
sum = a + b
return sum
}
}
一個不返回任何東西的函式可以返回一個類似在Java中的void
型別,並表示該函式不返回任何內容。 在Scala中不返回任何東西的函式稱為過程。
語法
object Hello{
def printMe( ) : Unit = {
println("Hello, Scala!")
}
}
Scala為呼叫方法提供了許多句法變體。以下是呼叫方法的標準方法 -
functionName( list of parameters )
如果使用物件的範例呼叫函式,那麼可使用與Java類似的點符號,如下所示:
[instance.]functionName( list of parameters )
嘗試以下範例程式來定義並呼叫相同的函式 -
範例 -
object Demo {
def main(args: Array[String]) {
println( "Returned Value : " + addInt(5,7) );
}
def addInt( a:Int, b:Int ) : Int = {
var sum:Int = 0
sum = a + b
return sum
}
}
將上述程式儲存在原始檔:Demo.scala中,使用以下命令編譯和執行此程式。
$ scalac Demo.scala
$ scala Demo
Returned Value : 12
Scala函式是Scala程式設計的核心,因此Scala被認為是函式式程式設計語言。以下是與Scala函式相關的幾個重要概念,Scala程式員應該要理解。
序號 | 函式 |
---|---|
1 | 按名稱呼叫函式 |
2 | 命名引數的函式 |
3 | 可變引數的函式 |
4 | 遞回函式 |
5 | 預設引數值函式 |
6 | 高階函式 |
7 | 巢狀函式 |
8 | 匿名函式 |
9 | 部分應用函式 |
10 | 柯里化函式 |