Scala函式


函式是一組執行的語句。您可以將程式碼按功能分成一個個單獨的函式。 如何在不同函式之間劃分你的程式碼取決於你,但從邏輯上講,通常每個函式執行一個特定的任務。

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 柯里化函式