鍍金池/ 教程/ Scala/ Scala函數(shù)
Scala方法重載
Scala模式匹配
Scala throw關(guān)鍵字
Scala提取器
Scala概述
Scala throws關(guān)鍵字
Scala finally塊
Scala正則表達(dá)式
Scala循環(huán)語句
Scala多線程
Scala函數(shù)
Scala final關(guān)鍵字
Scala方法覆蓋
Scala字符串
Scala線程實(shí)現(xiàn)
Scala異常處理
Scala類和對象
Scala數(shù)據(jù)類型
Scala單例和伴生對象
Scala構(gòu)造函數(shù)
Scala教程
Scala Case類和對象
Scala繼承
Scala開發(fā)環(huán)境安裝配置
Scala運(yùn)算符
Scala文件I/O
Scala線程方法
Scala變量
Scala try-catch語句
Scala基礎(chǔ)語法
Scala集合
Scala數(shù)組
Scala閉包
Scala訪問修辭符
Scala this關(guān)鍵字

Scala函數(shù)

函數(shù)是一組執(zhí)行的語句。您可以將代碼按功能分成一個(gè)個(gè)單獨(dú)的函數(shù)。 如何在不同函數(shù)之間劃分你的代碼取決于你,但從邏輯上講,通常每個(gè)函數(shù)執(zhí)行一個(gè)特定的任務(wù)。

Scala具有兩種函數(shù),術(shù)語 - 方法和函數(shù)是可以互換的。 Scala方法是具有名稱,簽名,可選地一些注釋和一些字節(jié)碼的類的一部分,作為Scala中的函數(shù)是可以分配給變量的完整對象。 換句話說,定義為某個(gè)對象的成員的函數(shù)稱為方法。

函數(shù)定義可以出現(xiàn)在源文件的任何位置,Scala允許嵌套函數(shù)定義,也就是其他函數(shù)定義中的函數(shù)定義。有一點(diǎn)要注意的是,Scala函數(shù)的名稱可以包含符號(hào),如:+,++,~,&,- , --\,/,:等的字符。

函數(shù)聲明

Scala函數(shù)聲明具有以下形式 -

def functionName ([list of parameters]) : [return type]

如果不使用等號(hào)和方法體,則隱式聲明抽象(abstract)方法。

函數(shù)定義

Scala函數(shù)定義具有以下形式 -

語法

def functionName ([list of parameters]) : [return type] = {
   function body
   return [expr]
}

這里,返回類型可以是任何有效的Scala數(shù)據(jù)類型,參數(shù)列表將是由逗號(hào)分隔的變量列表,參數(shù)列表和返回類型是可選的。與Java非常相似,返回語句可以與表達(dá)式一起使用,以防函數(shù)返回值。 以下是將兩個(gè)整數(shù)相加并返回其總和的函數(shù),

語法

object add {
   def addInt( a:Int, b:Int ) : Int = {
      var sum:Int = 0
      sum = a + b
      return sum
   }
}

一個(gè)不返回任何東西的函數(shù)可以返回一個(gè)類似在Java中的void類型,并表示該函數(shù)不返回任何內(nèi)容。 在Scala中不返回任何東西的函數(shù)稱為過程。

語法

object Hello{
   def printMe( ) : Unit = {
      println("Hello, Scala!")
   }
}

調(diào)用函數(shù)

Scala為調(diào)用方法提供了許多句法變體。以下是調(diào)用方法的標(biāo)準(zhǔn)方法 -

functionName( list of parameters )

如果使用對象的實(shí)例調(diào)用函數(shù),那么可使用與Java類似的點(diǎn)符號(hào),如下所示:

[instance.]functionName( list of parameters )

嘗試以下示例程序來定義并調(diào)用相同的函數(shù) -

示例 -

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中,使用以下命令編譯和執(zhí)行此程序。

$ scalac Demo.scala
$ scala Demo

Returned Value : 12

Scala函數(shù)是Scala編程的核心,因此Scala被認(rèn)為是函數(shù)式編程語言。以下是與Scala函數(shù)相關(guān)的幾個(gè)重要概念,Scala程序員應(yīng)該要理解。

序號(hào) 函數(shù)
1 按名稱調(diào)用函數(shù)
2 命名參數(shù)的函數(shù)
3 可變參數(shù)的函數(shù)
4 遞歸函數(shù)
5 默認(rèn)參數(shù)值函數(shù)
6 高階函數(shù)
7 嵌套函數(shù)
8 匿名函數(shù)
9 部分應(yīng)用函數(shù)
10 柯里化函數(shù)